{
  "match_info": {
    "home_team": "Hull",
    "away_team": "Everton",
    "tournament": "Premier League",
    "date": "20261011",
    "timezone": "America/New_York",
    "home_formation": "5-4-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": "0-1",
    "home_goals": 0,
    "away_goals": 1,
    "most_likely_score_probability": 0.1112,
    "match_resolution": "regulation",
    "predicted_winner": "Everton",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2427,
      "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": "0-1",
        "probability": 0.1112
      },
      {
        "score": "1-1",
        "probability": 0.1154
      },
      {
        "score": "1-2",
        "probability": 0.097
      },
      {
        "score": "0-2",
        "probability": 0.0949
      },
      {
        "score": "0-0",
        "probability": 0.0671
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0671,
      "0-1": 0.1112,
      "0-2": 0.0949,
      "0-3": 0.0535,
      "0-4": 0.0227,
      "0-5": 0.0077,
      "0-6": 0.0022,
      "0-7": 0.0005,
      "1-0": 0.0668,
      "1-1": 0.1154,
      "1-2": 0.097,
      "1-3": 0.0547,
      "1-4": 0.0232,
      "1-5": 0.0078,
      "1-6": 0.0022,
      "1-7": 0.0005,
      "2-0": 0.0346,
      "2-1": 0.0585,
      "2-2": 0.0496,
      "2-3": 0.028,
      "2-4": 0.0118,
      "2-5": 0.004,
      "2-6": 0.0011,
      "3-0": 0.0118,
      "3-1": 0.0199,
      "3-2": 0.0169,
      "3-3": 0.0095,
      "3-4": 0.004,
      "3-5": 0.0014,
      "4-0": 0.003,
      "4-1": 0.0051,
      "4-2": 0.0043,
      "4-3": 0.0024,
      "4-4": 0.001,
      "5-0": 0.0006,
      "5-1": 0.001,
      "5-2": 0.0009
    },
    "outcome": {
      "home_win": 0.2273,
      "draw": 0.2427,
      "away_win": 0.5301
    },
    "markets": {
      "over_2_5_goals": 0.51,
      "under_2_5_goals": 0.49,
      "btts_yes": 0.5232,
      "btts_no": 0.4768,
      "home_clean_sheet": 0.184,
      "away_clean_sheet": 0.3599
    },
    "home_ratings": {
      "DR": 6.71,
      "MCR": 6.79,
      "ATR": 6.86,
      "GK": 7.01
    },
    "away_ratings": {
      "DR": 6.82,
      "MCR": 7.01,
      "ATR": 6.76,
      "GK": 7.07
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Hull vs Everton. Most likely scoreline: 0-1. Lambdas derived from 7 home and 4 away individual player duels.",
      "key_player": "Projected scorer(s): Thierno Barry",
      "tactical_analysis": "Tactical parity between 5-4-1 and 4-2-3-1. Match outcome driven primarily by individual player quality. Away midfield dictates play with ~54% possession expected (Regan Slater vs James Garner). Total antagonist xG — Home: 0.66, Away: 0.94. 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.72,
    "home_lambda": 1.022,
    "away_lambda": 1.693,
    "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.1154,
    "headline_policy": "decisive_score_substitution"
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.2273,
      "draw": 0.2427,
      "away_win": 0.5301
    },
    "favorite": "Everton",
    "favorite_win_probability": 0.5301,
    "fair_spread": -0.671,
    "fair_total": 2.715,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Hull",
        "estimate": 1.022,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Everton",
        "estimate": 1.693,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.51,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.5232,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Hull",
        "estimate": 1.0,
        "probability": 0.184,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Everton",
        "estimate": 1.0,
        "probability": 0.3599,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Oli McBurnie (Hull)",
        "estimate": 0.2343,
        "probability": 0.2089,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Thierno Barry (Everton)",
        "estimate": 0.5664,
        "probability": 0.4324,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Mohamed Belloumi (Hull)",
        "estimate": 0.1247,
        "probability": 0.1172,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Kiernan Dewsbury-Hall (Everton)",
        "estimate": 0.2417,
        "probability": 0.2147,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.715,
      "expected_total_shots": 26,
      "expected_total_passes": 687,
      "expected_pressing_actions_per_90": 14.5,
      "possession_home_pct": 46.4,
      "possession_away_pct": 53.6,
      "notes": "Everton projects to control midfield possession"
    },
    "expected_game_script": {
      "favorite": "Everton",
      "favorite_win_probability": 0.5301,
      "script": "Everton is the fair winner side, but the baseline remains narrow: fair spread -0.67 goals and fair total 2.71.",
      "first_half": "Expect balanced tempo while both sides test the matchup thesis; shot baseline is about 13 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Hull must keep the match inside one goal.",
      "late_game": "A Everton lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Everton chance creation leans on Thierno Barry against Semi Ajayi, Nobel Mendy in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; Everton projects to control midfield possession.",
    "expected_rotation_usage_behavior": [
      "Hull: starters carry the main goal usage through the highest xG attackers; bench watchlist: Christos Mouzakitis, Robinio Vaz, Joe Gelhardt.",
      "Everton: starters carry the main goal usage through Thierno Barry; bench watchlist: Hayden Hackney, Beto.",
      "Assist usage should flow through Jack Grealish; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Everton tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects balanced tempo, about 13 total first-half shots, and 1.36 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 Hull 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 Everton.",
      "Hull 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": {
    "Hull": {
      "formation": "5-4-1",
      "players": {
        "Oli McBurnie": {
          "player_id": 367228,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 188,
          "market_value": 5400000,
          "stats": {
            "expected_goals": 0.2343,
            "goal_rate": 0.2241,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0472,
            "key_pass": 1,
            "rating": 6.8854,
            "minutes": 86,
            "total_pass": 18,
            "accurate_pass": 11,
            "duels_won": 8,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 34,
            "possession_lost": 11.9295,
            "dispossessed": 0.6018,
            "duels_lost": 9,
            "aerial_lost": 6,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.2279,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1077,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 9,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.7864,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
            "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2089,
            "projected_assists": 0,
            "assist_probability": 0.0461,
            "finishing_factor": 0.9931,
            "creation_factor": 1.25,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3644,
                "expected_assists": 0.02,
                "total_shots": 4,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 15,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 82,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3297,
                "expected_assists": 0.0443,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3823,
                "expected_assists": 0.0505,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 1,
                "aerial_won": 9,
                "duels_won": 13
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0129,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 10,
                "key_pass": 1,
                "aerial_won": 5,
                "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": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1558,
                "expected_assists": 0.0114,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 18,
                "accurate_pass": 11,
                "key_pass": 2,
                "clearances": 3,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3569,
            "combined_rank_score": 1531.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 873.0,
            "sofascore_rating": 6.55,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2189.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8854,
            "source_file": "data/player_rankings.csv",
            "player_name": "Oli McBurnie",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Koni De Winter",
                  "ranking": 3564
                },
                {
                  "player_name": "Luis Henrique",
                  "ranking": 3565
                },
                {
                  "player_name": "Lorenzo Lucca",
                  "ranking": 3566
                },
                {
                  "player_name": "Neil El Aynaoui",
                  "ranking": 3567
                },
                {
                  "player_name": "Santiago Castro",
                  "ranking": 3568
                }
              ],
              "lower": [
                {
                  "player_name": "Philip Zinckernagel",
                  "ranking": 3570
                },
                {
                  "player_name": "Cristian Roldan",
                  "ranking": 3571
                },
                {
                  "player_name": "Joaquín Pereyra",
                  "ranking": 3572
                },
                {
                  "player_name": "Moise Bombito",
                  "ranking": 3573
                },
                {
                  "player_name": "Germán Berterame",
                  "ranking": 3574
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "history_matches": 5,
          "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": 5,
            "data_confidence": 0.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9943,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 5 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2891,
                "goals": 0.2866,
                "goal_rate": 0.2866,
                "shots_on_target": 0.7117,
                "total_shots": 1.9629,
                "expected_assists": 0.0398,
                "key_pass": 0.7383,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.1761,
                "accurate_pass": 11.0649,
                "duels_won": 8.5001,
                "total_long_balls": 0.4763,
                "accurate_long_balls": 0.4763,
                "total_opp_half_passes": 13.41,
                "accurate_opp_half_passes": 7.3468,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.8649,
                "possession_lost": 11.9979,
                "dispossessed": 0.6052,
                "duels_lost": 9.3312,
                "aerial_lost": 6.1619,
                "total_contest": 1.1544,
                "won_contest": 0.7304,
                "ball_recovery": 1.7528,
                "challenges_lost": 0.7049,
                "fouls": 1.4352,
                "fouls_drawn": 2.2,
                "assists": 0.2292,
                "assist_rate": 0.2292,
                "interceptions": 0.2696,
                "tackles_won": 0.2292,
                "tackles": 0.6188,
                "clearances": 1.6148,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5648,
                "xgot": 0.1329,
                "offsides": 0.0,
                "ball_carries": 6.3179,
                "total_progression": 9.1669,
                "progressive_carries": 0.8089,
                "shots_off_target": 1.2512
              },
              "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": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.2702,
                  "totalOppositionHalfPasses": 13.41,
                  "accurateOppositionHalfPasses": 7.3468,
                  "accuratePass": 11.0649,
                  "totalShots": 2.1737
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.289054274559021,
                    "model_output": 0.2891,
                    "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.0504
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0331
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0327
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0096
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0095
                        }
                      ],
                      "others": 0.0202,
                      "total": 0.2891,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.225725
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.124534
                        },
                        {
                          "name": "goals",
                          "margin": -0.123133
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.037844
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.03582
                        }
                      ],
                      "others_margin": 0.072747
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2866053879261017,
                    "model_output": 0.2866,
                    "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.0379
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0405
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0383
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0101
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0086
                        }
                      ],
                      "others": 0.0241,
                      "total": 0.2866,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.170496
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.155108
                        },
                        {
                          "name": "goals",
                          "margin": -0.146077
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.040502
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.033399
                        }
                      ],
                      "others_margin": 0.087787
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7116628885269165,
                    "model_output": 0.7117,
                    "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.1338
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0624
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0461
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0284
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.027
                        }
                      ],
                      "others": 0.0558,
                      "total": 0.7117,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.222524
                        },
                        {
                          "name": "goals",
                          "margin": -0.097622
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.073073
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.042409
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.040346
                        }
                      ],
                      "others_margin": 0.081606
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.9629069566726685,
                    "model_output": 1.9629,
                    "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.468
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1353
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1294
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.062
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0501
                        }
                      ],
                      "others": 0.01,
                      "total": 1.9629,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.468021
                        },
                        {
                          "name": "goals",
                          "margin": -0.135304
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.129449
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.062042
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.050089
                        }
                      ],
                      "others_margin": 0.009904
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03982923552393913,
                    "model_output": 0.0398,
                    "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.0123
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0115
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0083
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.005
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0085,
                      "total": 0.0398,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.174992
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.163429
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.135956
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.092441
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.070777
                        }
                      ],
                      "others_margin": -0.191088
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7382708787918091,
                    "model_output": 0.7383,
                    "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.1905
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0417
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0413
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0371
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0307
                        }
                      ],
                      "others": -0.1202,
                      "total": 0.7383,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.248933
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.04715
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.04667
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.043878
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.036449
                        }
                      ],
                      "others_margin": -0.15087
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.885397911071777,
                    "model_output": 6.8854,
                    "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.0394
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0175
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0126
                        },
                        {
                          "name": "wasFouled",
                          "contribution": 0.0124
                        },
                        {
                          "name": "big_chance_conversion",
                          "contribution": 0.0101
                        }
                      ],
                      "others": 0.0312,
                      "total": 6.8854,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.039443
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.017457
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.012645
                        },
                        {
                          "name": "wasFouled",
                          "margin": 0.012432
                        },
                        {
                          "name": "big_chance_conversion",
                          "margin": 0.010131
                        }
                      ],
                      "others_margin": 0.031127
                    }
                  }
                ],
                "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.9943, quality 0.467)",
              "stats": {
                "expected_goals": 0.2874,
                "goals": 0.285,
                "goal_rate": 0.285,
                "shots_on_target": 0.7076,
                "total_shots": 1.9517,
                "expected_assists": 0.0396,
                "key_pass": 0.7341,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.0725,
                "accurate_pass": 11.0018,
                "duels_won": 8.4516,
                "total_long_balls": 0.4736,
                "accurate_long_balls": 0.4736,
                "total_opp_half_passes": 13.3336,
                "accurate_opp_half_passes": 7.3049,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.6719,
                "possession_lost": 11.9295,
                "dispossessed": 0.6018,
                "duels_lost": 9.278,
                "aerial_lost": 6.1268,
                "total_contest": 1.1478,
                "won_contest": 0.7262,
                "ball_recovery": 1.7428,
                "challenges_lost": 0.7009,
                "fouls": 1.427,
                "fouls_drawn": 2.1875,
                "assists": 0.2279,
                "assist_rate": 0.2279,
                "interceptions": 0.2681,
                "tackles_won": 0.2279,
                "tackles": 0.6153,
                "clearances": 1.6056,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5616,
                "xgot": 0.1321,
                "offsides": 0.0,
                "ball_carries": 6.2819,
                "total_progression": 9.1146,
                "progressive_carries": 0.8043,
                "shots_off_target": 1.2441
              },
              "params": {
                "market_value_eur": 5400000,
                "quality_factor": 0.4671,
                "boost_factor": 0.9943,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2874,
                "goals": 0.285,
                "goal_rate": 0.285,
                "shots_on_target": 0.7076,
                "total_shots": 1.9517,
                "expected_assists": 0.0396,
                "key_pass": 0.7341,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.0725,
                "accurate_pass": 11.0018,
                "duels_won": 8.4516,
                "total_long_balls": 0.4736,
                "accurate_long_balls": 0.4736,
                "total_opp_half_passes": 13.3336,
                "accurate_opp_half_passes": 7.3049,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.6719,
                "possession_lost": 11.9295,
                "dispossessed": 0.6018,
                "duels_lost": 9.278,
                "aerial_lost": 6.1268,
                "total_contest": 1.1478,
                "won_contest": 0.7262,
                "ball_recovery": 1.7428,
                "challenges_lost": 0.7009,
                "fouls": 1.427,
                "fouls_drawn": 2.1875,
                "assists": 0.2279,
                "assist_rate": 0.2279,
                "interceptions": 0.2681,
                "tackles_won": 0.2279,
                "tackles": 0.6153,
                "clearances": 1.6056,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5616,
                "xgot": 0.1321,
                "offsides": 0.0,
                "ball_carries": 6.2819,
                "total_progression": 9.1146,
                "progressive_carries": 0.8043,
                "shots_off_target": 1.2441
              },
              "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.226,
                "goals": 0.2241,
                "goal_rate": 0.2241,
                "shots_on_target": 0.5565,
                "total_shots": 1.5349,
                "expected_assists": 0.0396,
                "key_pass": 0.7341,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.0725,
                "accurate_pass": 11.0018,
                "duels_won": 8.4516,
                "total_long_balls": 0.4736,
                "accurate_long_balls": 0.4736,
                "total_opp_half_passes": 13.3336,
                "accurate_opp_half_passes": 7.3049,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.6719,
                "possession_lost": 11.9295,
                "dispossessed": 0.6018,
                "duels_lost": 9.278,
                "aerial_lost": 6.1268,
                "total_contest": 1.1478,
                "won_contest": 0.7262,
                "ball_recovery": 1.7428,
                "challenges_lost": 0.7009,
                "fouls": 1.427,
                "fouls_drawn": 2.1875,
                "assists": 0.2279,
                "assist_rate": 0.2279,
                "interceptions": 0.2681,
                "tackles_won": 0.2279,
                "tackles": 0.6153,
                "clearances": 1.6056,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4416,
                "xgot": 0.1039,
                "offsides": 0.0,
                "ball_carries": 6.2819,
                "total_progression": 9.1146,
                "progressive_carries": 0.8043,
                "shots_off_target": 0.9784,
                "duel_xg_multiplier": 0.7864,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.7864,
                  "skill_edge": -0.1473,
                  "height_edge": 0.002,
                  "attacker_skill": 0.4671,
                  "defender_skill": 0.7944,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Jarrad Branthwaite",
                      "market_value": 41000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.839
                    },
                    {
                      "player": "Vitaliy Mykolenko",
                      "market_value": 26000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7498
                    }
                  ],
                  "xg_override": 0.226
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.9517,
                  "after": 1.5349
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2441,
                  "after": 0.9784
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7076,
                  "after": 0.5565
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.5616,
                  "after": 0.4416
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2874,
                  "after": 0.226
                },
                {
                  "stat": "goals",
                  "before": 0.285,
                  "after": 0.2241
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1321,
                  "after": 0.1039
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.2343,
                "goal_rate": 0.2241,
                "goals": 0,
                "shots_on_target": 0.5565,
                "total_shots": 1.5349,
                "expected_assists": 0.0472,
                "key_pass": 0.7341,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.0725,
                "accurate_pass": 11.0018,
                "duels_won": 8.4516,
                "total_long_balls": 0.4736,
                "accurate_long_balls": 0.4736,
                "total_opp_half_passes": 13.3336,
                "accurate_opp_half_passes": 7.3049,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.6719,
                "possession_lost": 11.9295,
                "dispossessed": 0.6018,
                "duels_lost": 9.278,
                "aerial_lost": 6.1268,
                "total_contest": 1.1478,
                "won_contest": 0.7262,
                "ball_recovery": 1.7428,
                "challenges_lost": 0.7009,
                "fouls": 1.427,
                "fouls_drawn": 2.1875,
                "assist_rate": 0.2279,
                "assists": 0,
                "interceptions": 0.2681,
                "tackles_won": 0.2279,
                "tackles": 0.6153,
                "clearances": 1.6056,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4416,
                "xgot": 0.1077,
                "offsides": 0.0,
                "ball_carries": 6.2819,
                "total_progression": 9.1146,
                "progressive_carries": 0.8043,
                "shots_off_target": 0.9784,
                "duel_xg_multiplier": 0.7864,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9931,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.226,
                  "after": 0.2343
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0396,
                  "after": 0.0472
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 5 by projected rating, fifa_overall 75.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.2343,
                "goal_rate": 0.2241,
                "goals": 0,
                "shots_on_target": 0.5565,
                "total_shots": 1.5349,
                "expected_assists": 0.0472,
                "key_pass": 0.7341,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.0725,
                "accurate_pass": 11.0018,
                "duels_won": 8.4516,
                "total_long_balls": 0.4736,
                "accurate_long_balls": 0.4736,
                "total_opp_half_passes": 13.3336,
                "accurate_opp_half_passes": 7.3049,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.6719,
                "possession_lost": 11.9295,
                "dispossessed": 0.6018,
                "duels_lost": 9.278,
                "aerial_lost": 6.1268,
                "total_contest": 1.1478,
                "won_contest": 0.7262,
                "ball_recovery": 1.7428,
                "challenges_lost": 0.7009,
                "fouls": 1.427,
                "fouls_drawn": 2.1875,
                "assist_rate": 0.2279,
                "assists": 0,
                "interceptions": 0.2681,
                "tackles_won": 0.2279,
                "tackles": 0.6153,
                "clearances": 1.6056,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4416,
                "xgot": 0.1077,
                "offsides": 0.0,
                "ball_carries": 6.2819,
                "total_progression": 9.1146,
                "progressive_carries": 0.8043,
                "shots_off_target": 0.9784,
                "duel_xg_multiplier": 0.7864,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9931,
                "creation_factor": 1.25,
                "fifa_overall": 75.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": 3569,
                "fifa_rank": 2189.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.2343,
                "goal_rate": 0.2241,
                "goals": 0,
                "shots_on_target": 0.5565,
                "total_shots": 1.5349,
                "expected_assists": 0.0472,
                "key_pass": 0.7341,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.0725,
                "accurate_pass": 11.0018,
                "duels_won": 8.4516,
                "total_long_balls": 0.4736,
                "accurate_long_balls": 0.4736,
                "total_opp_half_passes": 13.3336,
                "accurate_opp_half_passes": 7.3049,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.6719,
                "possession_lost": 11.9295,
                "dispossessed": 0.6018,
                "duels_lost": 9.278,
                "aerial_lost": 6.1268,
                "total_contest": 1.1478,
                "won_contest": 0.7262,
                "ball_recovery": 1.7428,
                "challenges_lost": 0.7009,
                "fouls": 1.427,
                "fouls_drawn": 2.1875,
                "assist_rate": 0.2279,
                "assists": 0,
                "interceptions": 0.2681,
                "tackles_won": 0.2279,
                "tackles": 0.6153,
                "clearances": 1.6056,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4416,
                "xgot": 0.1077,
                "offsides": 0.0,
                "ball_carries": 6.2819,
                "total_progression": 9.1146,
                "progressive_carries": 0.8043,
                "shots_off_target": 0.9784,
                "duel_xg_multiplier": 0.7864,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2089,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9931,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.2089,
                "scorer_weight": 0.2327,
                "squad_weight_total": 1.0736,
                "weight_share": 0.2167,
                "finishing_factor": 0.9931,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.2343,
                "goal_rate": 0.2241,
                "goals": 0,
                "shots_on_target": 0.5565,
                "total_shots": 1.5349,
                "expected_assists": 0.0472,
                "key_pass": 0.7341,
                "rating": 6.8854,
                "minutes": 85.83,
                "total_pass": 18.0725,
                "accurate_pass": 11.0018,
                "duels_won": 8.4516,
                "total_long_balls": 0.4736,
                "accurate_long_balls": 0.4736,
                "total_opp_half_passes": 13.3336,
                "accurate_opp_half_passes": 7.3049,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 33.6719,
                "possession_lost": 11.9295,
                "dispossessed": 0.6018,
                "duels_lost": 9.278,
                "aerial_lost": 6.1268,
                "total_contest": 1.1478,
                "won_contest": 0.7262,
                "ball_recovery": 1.7428,
                "challenges_lost": 0.7009,
                "fouls": 1.427,
                "fouls_drawn": 2.1875,
                "assist_rate": 0.2279,
                "assists": 0,
                "interceptions": 0.2681,
                "tackles_won": 0.2279,
                "tackles": 0.6153,
                "clearances": 1.6056,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4416,
                "xgot": 0.1077,
                "offsides": 0.0,
                "ball_carries": 6.2819,
                "total_progression": 9.1146,
                "progressive_carries": 0.8043,
                "shots_off_target": 0.9784,
                "duel_xg_multiplier": 0.7864,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.9,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2089,
                "projected_assists": 0,
                "assist_probability": 0.0461,
                "finishing_factor": 0.9931,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0461,
                "provider_weight": 0.059,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0827,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 14
              }
            }
          ]
        },
        "Sorba Thomas": {
          "player_id": 911039,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 7,
          "height": 185,
          "market_value": 14500000,
          "stats": {
            "expected_goals": 0.1313,
            "goal_rate": 0.1831,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0862,
            "key_pass": 1,
            "rating": 6.7563,
            "minutes": 74,
            "total_pass": 12,
            "accurate_pass": 9,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 7,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 9.6122,
            "dispossessed": 1.8004,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 9,
            "total_progression": 55,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8393,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
            "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.123,
            "projected_assists": 0,
            "assist_probability": 0.0826,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 63,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1882,
                "expected_assists": 0.0432,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 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": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 30,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0191,
                "expected_assists": 0.0309,
                "total_shots": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "key_pass": 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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0445,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3190,
            "combined_rank_score": 1151.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 68.0,
            "sofascore_rating": 7.6,
            "sofascore_appearances": 9.0,
            "fifa_rank": 2234.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7563,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sorba Thomas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Brajan Gruda",
                  "ranking": 3185
                },
                {
                  "player_name": "Guillaume Restes",
                  "ranking": 3186
                },
                {
                  "player_name": "Johan Mojica",
                  "ranking": 3187
                },
                {
                  "player_name": "Alexsandro",
                  "ranking": 3188
                },
                {
                  "player_name": "Mërgim Vojvoda",
                  "ranking": 3189
                }
              ],
              "lower": [
                {
                  "player_name": "Samson Baidoo",
                  "ranking": 3191
                },
                {
                  "player_name": "Guéla Doué",
                  "ranking": 3192
                },
                {
                  "player_name": "Amar Dedić",
                  "ranking": 3193
                },
                {
                  "player_name": "Taylor Harwood-Bellis",
                  "ranking": 3194
                },
                {
                  "player_name": "Saïd El Mala",
                  "ranking": 3195
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0129,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 3 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1488,
                "goals": 0.2153,
                "goal_rate": 0.2153,
                "shots_on_target": 0.5285,
                "total_shots": 1.6125,
                "expected_assists": 0.0714,
                "key_pass": 0.8736,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 11.9951,
                "accurate_pass": 9.1681,
                "duels_won": 1.0,
                "total_long_balls": 1.0583,
                "accurate_long_balls": 0.3887,
                "total_opp_half_passes": 9.3168,
                "accurate_opp_half_passes": 6.7706,
                "crosses_total": 2.447,
                "crosses_accurate": 0.3304,
                "touches": 22.0962,
                "possession_lost": 9.4898,
                "dispossessed": 1.7775,
                "duels_lost": 3.8853,
                "aerial_lost": 1.1079,
                "total_contest": 1.2225,
                "won_contest": 0.6112,
                "ball_recovery": 2.38,
                "challenges_lost": 0.0,
                "fouls": 0.3887,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3887,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3304,
                "ball_carries": 8.9436,
                "total_progression": 54.363,
                "progressive_carries": 1.7775,
                "shots_off_target": 1.084
              },
              "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": "Newcastle United",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0795,
                  "totalOppositionHalfPasses": 9.3168,
                  "accurateOppositionHalfPasses": 6.7707,
                  "accuratePass": 9.1681,
                  "totalShots": 1.1079
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.14883795380592346,
                    "model_output": 0.1488,
                    "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.0681
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0476
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0209
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0138
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0083
                        }
                      ],
                      "others": -0.0277,
                      "total": 0.1488,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.294348
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.196411
                        },
                        {
                          "name": "goals",
                          "margin": -0.100264
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.071835
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.045859
                        }
                      ],
                      "others_margin": -0.170197
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.21530133485794067,
                    "model_output": 0.2153,
                    "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.0736
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.03
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0218
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0206
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0174
                        }
                      ],
                      "others": -0.0158,
                      "total": 0.2153,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.308261
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.114358
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.084416
                        },
                        {
                          "name": "goals",
                          "margin": -0.079663
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.072383
                        }
                      ],
                      "others_margin": -0.071125
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5284848809242249,
                    "model_output": 0.5285,
                    "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.1702
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0729
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0514
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0459
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0432
                        }
                      ],
                      "others": -0.0517,
                      "total": 0.5285,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.275395
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.108842
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.084436
                        },
                        {
                          "name": "goals",
                          "margin": -0.081961
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.077392
                        }
                      ],
                      "others_margin": -0.093494
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.6124910116195679,
                    "model_output": 1.6125,
                    "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.4607
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.107
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0788
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0664
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0411
                        }
                      ],
                      "others": -0.0664,
                      "total": 1.6125,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.460742
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.107004
                        },
                        {
                          "name": "goals",
                          "margin": -0.078824
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.066412
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.041059
                        }
                      ],
                      "others_margin": -0.066482
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07136368006467819,
                    "model_output": 0.0714,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1224
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0695
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0686
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0588
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.057
                      }
                    ],
                    "decomposition": {
                      "base": 0.0643,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0187
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0078
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0055
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0051
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0051
                        }
                      ],
                      "others": -0.0085,
                      "total": 0.0714,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.255284
                        },
                        {
                          "name": "rating",
                          "margin": -0.099155
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.075572
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.070707
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.06606
                        }
                      ],
                      "others_margin": -0.112835
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.873601496219635,
                    "model_output": 0.8736,
                    "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.2522
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0588
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0489
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0432
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0293
                        }
                      ],
                      "others": 0.0412,
                      "total": 0.8736,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.31787
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.065644
                        },
                        {
                          "name": "rating",
                          "margin": -0.058028
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.05148
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.034609
                        }
                      ],
                      "others_margin": 0.04836
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.756316661834717,
                    "model_output": 6.7563,
                    "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.0511
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0238
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0179
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0169
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.014
                        }
                      ],
                      "others": -0.06,
                      "total": 6.7563,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.051147
                        },
                        {
                          "name": "rating",
                          "margin": 0.023766
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.017904
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.016908
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.013957
                        }
                      ],
                      "others_margin": -0.059902
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 3,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0129, quality 0.574)",
              "stats": {
                "expected_goals": 0.1508,
                "goals": 0.2181,
                "goal_rate": 0.2181,
                "shots_on_target": 0.5353,
                "total_shots": 1.6333,
                "expected_assists": 0.0723,
                "key_pass": 0.8849,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 12.1498,
                "accurate_pass": 9.2864,
                "duels_won": 1.0129,
                "total_long_balls": 1.072,
                "accurate_long_balls": 0.3937,
                "total_opp_half_passes": 9.437,
                "accurate_opp_half_passes": 6.8579,
                "crosses_total": 2.4786,
                "crosses_accurate": 0.3347,
                "touches": 22.3812,
                "possession_lost": 9.6122,
                "dispossessed": 1.8004,
                "duels_lost": 3.9354,
                "aerial_lost": 1.1222,
                "total_contest": 1.2383,
                "won_contest": 0.6191,
                "ball_recovery": 2.4107,
                "challenges_lost": 0.0,
                "fouls": 0.3937,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3937,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3347,
                "ball_carries": 9.059,
                "total_progression": 55.0643,
                "progressive_carries": 1.8004,
                "shots_off_target": 1.098
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0129,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1508,
                "goals": 0.2181,
                "goal_rate": 0.2181,
                "shots_on_target": 0.5353,
                "total_shots": 1.6333,
                "expected_assists": 0.0723,
                "key_pass": 0.8849,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 12.1498,
                "accurate_pass": 9.2864,
                "duels_won": 1.0129,
                "total_long_balls": 1.072,
                "accurate_long_balls": 0.3937,
                "total_opp_half_passes": 9.437,
                "accurate_opp_half_passes": 6.8579,
                "crosses_total": 2.4786,
                "crosses_accurate": 0.3347,
                "touches": 22.3812,
                "possession_lost": 9.6122,
                "dispossessed": 1.8004,
                "duels_lost": 3.9354,
                "aerial_lost": 1.1222,
                "total_contest": 1.2383,
                "won_contest": 0.6191,
                "ball_recovery": 2.4107,
                "challenges_lost": 0.0,
                "fouls": 0.3937,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3937,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3347,
                "ball_carries": 9.059,
                "total_progression": 55.0643,
                "progressive_carries": 1.8004,
                "shots_off_target": 1.098
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "expected_goals": 0.1266,
                "goals": 0.1831,
                "goal_rate": 0.1831,
                "shots_on_target": 0.4493,
                "total_shots": 1.3709,
                "expected_assists": 0.0723,
                "key_pass": 0.8849,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 12.1498,
                "accurate_pass": 9.2864,
                "duels_won": 1.0129,
                "total_long_balls": 1.072,
                "accurate_long_balls": 0.3937,
                "total_opp_half_passes": 9.437,
                "accurate_opp_half_passes": 6.8579,
                "crosses_total": 2.4786,
                "crosses_accurate": 0.3347,
                "touches": 22.3812,
                "possession_lost": 9.6122,
                "dispossessed": 1.8004,
                "duels_lost": 3.9354,
                "aerial_lost": 1.1222,
                "total_contest": 1.2383,
                "won_contest": 0.6191,
                "ball_recovery": 2.4107,
                "challenges_lost": 0.0,
                "fouls": 0.3937,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3937,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3347,
                "ball_carries": 9.059,
                "total_progression": 55.0643,
                "progressive_carries": 1.8004,
                "shots_off_target": 0.9216,
                "duel_xg_multiplier": 0.8393,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.8393,
                  "skill_edge": -0.0993,
                  "height_edge": -0.01,
                  "attacker_skill": 0.5737,
                  "defender_skill": 0.7944,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Jarrad Branthwaite",
                      "market_value": 41000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.839
                    },
                    {
                      "player": "Vitaliy Mykolenko",
                      "market_value": 26000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7498
                    }
                  ],
                  "xg_override": 0.1266
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.6333,
                  "after": 1.3709
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.098,
                  "after": 0.9216
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5353,
                  "after": 0.4493
                },
                {
                  "stat": "goals",
                  "before": 0.2181,
                  "after": 0.1831
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1508,
                  "after": 0.1266
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1313,
                "goal_rate": 0.1831,
                "goals": 0,
                "shots_on_target": 0.4493,
                "total_shots": 1.3709,
                "expected_assists": 0.0862,
                "key_pass": 0.8849,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 12.1498,
                "accurate_pass": 9.2864,
                "duels_won": 1.0129,
                "total_long_balls": 1.072,
                "accurate_long_balls": 0.3937,
                "total_opp_half_passes": 9.437,
                "accurate_opp_half_passes": 6.8579,
                "crosses_total": 2.4786,
                "crosses_accurate": 0.3347,
                "touches": 22.3812,
                "possession_lost": 9.6122,
                "dispossessed": 1.8004,
                "duels_lost": 3.9354,
                "aerial_lost": 1.1222,
                "total_contest": 1.2383,
                "won_contest": 0.6191,
                "ball_recovery": 2.4107,
                "challenges_lost": 0.0,
                "fouls": 0.3937,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3937,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3347,
                "ball_carries": 9.059,
                "total_progression": 55.0643,
                "progressive_carries": 1.8004,
                "shots_off_target": 0.9216,
                "duel_xg_multiplier": 0.8393,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_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.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0723,
                  "after": 0.0862
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 10 by projected rating, fifa_overall 75.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.1313,
                "goal_rate": 0.1831,
                "goals": 0,
                "shots_on_target": 0.4493,
                "total_shots": 1.3709,
                "expected_assists": 0.0862,
                "key_pass": 0.8849,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 12.1498,
                "accurate_pass": 9.2864,
                "duels_won": 1.0129,
                "total_long_balls": 1.072,
                "accurate_long_balls": 0.3937,
                "total_opp_half_passes": 9.437,
                "accurate_opp_half_passes": 6.8579,
                "crosses_total": 2.4786,
                "crosses_accurate": 0.3347,
                "touches": 22.3812,
                "possession_lost": 9.6122,
                "dispossessed": 1.8004,
                "duels_lost": 3.9354,
                "aerial_lost": 1.1222,
                "total_contest": 1.2383,
                "won_contest": 0.6191,
                "ball_recovery": 2.4107,
                "challenges_lost": 0.0,
                "fouls": 0.3937,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3937,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3347,
                "ball_carries": 9.059,
                "total_progression": 55.0643,
                "progressive_carries": 1.8004,
                "shots_off_target": 0.9216,
                "duel_xg_multiplier": 0.8393,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_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": 75.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": 3190,
                "fifa_rank": 2234.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1313,
                "goal_rate": 0.1831,
                "goals": 0,
                "shots_on_target": 0.4493,
                "total_shots": 1.3709,
                "expected_assists": 0.0862,
                "key_pass": 0.8849,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 12.1498,
                "accurate_pass": 9.2864,
                "duels_won": 1.0129,
                "total_long_balls": 1.072,
                "accurate_long_balls": 0.3937,
                "total_opp_half_passes": 9.437,
                "accurate_opp_half_passes": 6.8579,
                "crosses_total": 2.4786,
                "crosses_accurate": 0.3347,
                "touches": 22.3812,
                "possession_lost": 9.6122,
                "dispossessed": 1.8004,
                "duels_lost": 3.9354,
                "aerial_lost": 1.1222,
                "total_contest": 1.2383,
                "won_contest": 0.6191,
                "ball_recovery": 2.4107,
                "challenges_lost": 0.0,
                "fouls": 0.3937,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3937,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3347,
                "ball_carries": 9.059,
                "total_progression": 55.0643,
                "progressive_carries": 1.8004,
                "shots_off_target": 0.9216,
                "duel_xg_multiplier": 0.8393,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.123,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.123,
                "scorer_weight": 0.1641,
                "squad_weight_total": 1.0736,
                "weight_share": 0.1529,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1313,
                "goal_rate": 0.1831,
                "goals": 0,
                "shots_on_target": 0.4493,
                "total_shots": 1.3709,
                "expected_assists": 0.0862,
                "key_pass": 0.8849,
                "rating": 6.7563,
                "minutes": 74.33,
                "total_pass": 12.1498,
                "accurate_pass": 9.2864,
                "duels_won": 1.0129,
                "total_long_balls": 1.072,
                "accurate_long_balls": 0.3937,
                "total_opp_half_passes": 9.437,
                "accurate_opp_half_passes": 6.8579,
                "crosses_total": 2.4786,
                "crosses_accurate": 0.3347,
                "touches": 22.3812,
                "possession_lost": 9.6122,
                "dispossessed": 1.8004,
                "duels_lost": 3.9354,
                "aerial_lost": 1.1222,
                "total_contest": 1.2383,
                "won_contest": 0.6191,
                "ball_recovery": 2.4107,
                "challenges_lost": 0.0,
                "fouls": 0.3937,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.3937,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.3347,
                "ball_carries": 9.059,
                "total_progression": 55.0643,
                "progressive_carries": 1.8004,
                "shots_off_target": 0.9216,
                "duel_xg_multiplier": 0.8393,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.123,
                "projected_assists": 0,
                "assist_probability": 0.0826,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0826,
                "provider_weight": 0.069,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0967,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14
              }
            }
          ]
        },
        "Regan Slater": {
          "player_id": 864474,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 27,
          "height": 173,
          "market_value": 5100000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1116,
            "assist_rate": 0.1117,
            "assists": 0,
            "expected_goals": 0.0798,
            "goal_rate": 0.061,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8395,
            "minutes": 87,
            "total_pass": 27,
            "accurate_pass": 21,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 10,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 12,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 38,
            "possession_lost": 8.1103,
            "dispossessed": 0.5724,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "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.014,
            "ball_carries": 9,
            "total_progression": 23,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8945,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.0,
            "crosses_attempted": 2.1,
            "duel_win_rate": 0.388,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ainsley Maitland-Niles",
            "opponent_faced": "Ainsley Maitland-Niles",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0767,
            "projected_assists": 0,
            "assist_probability": 0.1056,
            "finishing_factor": 0.874,
            "creation_factor": 1.126,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 78,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1317,
                "expected_assists": 0.0319,
                "total_shots": 1,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 2,
                "interceptions": 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": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0418,
                "expected_assists": 0.1042,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0403,
                "expected_assists": 0.0148,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0063,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 20,
                "tackles": 4,
                "tackles_won": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.4411,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4157,
            "combined_rank_score": 2168.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3946.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8395,
            "source_file": "data/player_rankings.csv",
            "player_name": "Regan Slater",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ousseynou Niang",
                  "ranking": 4152
                },
                {
                  "player_name": "Joris Kayembe",
                  "ranking": 4153
                },
                {
                  "player_name": "Mujaid",
                  "ranking": 4154
                },
                {
                  "player_name": "Adriano Bertaccini",
                  "ranking": 4155
                },
                {
                  "player_name": "Matthieu Epolo",
                  "ranking": 4156
                }
              ],
              "lower": [
                {
                  "player_name": "Abdelkahar Kadri",
                  "ranking": 4158
                },
                {
                  "player_name": "Arsen Zakharyan",
                  "ranking": 4159
                },
                {
                  "player_name": "Nicolò Tresoldi",
                  "ranking": 4160
                },
                {
                  "player_name": "Santiago Arias",
                  "ranking": 4161
                },
                {
                  "player_name": "Carlos Forbs",
                  "ranking": 4162
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.582,
          "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.582,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9938,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.5,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 5 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.13, gls/90: 0.0, ast/90: 0.5)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.0665,
                "expected_assists": 0.0942,
                "assists": 0.0956,
                "assist_rate": 0.0956,
                "expected_goals": 0.0866,
                "goals": 0.0718,
                "goal_rate": 0.0718,
                "shots_on_target": 0.3327,
                "total_shots": 1.059,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.6707,
                "accurate_pass": 21.5054,
                "duels_won": 4.2581,
                "total_long_balls": 2.2907,
                "accurate_long_balls": 1.0344,
                "total_own_half_passes": 10.5399,
                "accurate_own_half_passes": 9.6243,
                "total_opp_half_passes": 16.1308,
                "accurate_opp_half_passes": 11.8811,
                "crosses_total": 1.1295,
                "crosses_accurate": 0.5107,
                "touches": 37.751,
                "possession_lost": 8.1609,
                "dispossessed": 0.576,
                "duels_lost": 2.1543,
                "aerial_won": 1.2489,
                "aerial_lost": 0.3063,
                "interceptions": 0.8885,
                "tackles_won": 0.9939,
                "tackles": 1.6855,
                "clearances": 0.9844,
                "total_contest": 0.6937,
                "won_contest": 0.6937,
                "challenges_lost": 0.6301,
                "fouls": 0.6419,
                "fouls_drawn": 0.6301,
                "blocks": 0.0,
                "big_chances_created": 0.3699,
                "big_chances_missed": 0.0,
                "xgot": 0.0152,
                "ball_carries": 9.4635,
                "total_progression": 23.4647,
                "progressive_carries": 0.3356,
                "shots_off_target": 0.7263
              },
              "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": "Newcastle United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.8885,
                  "creative_index": 0.5924,
                  "expectedGoals": 0.0529,
                  "expectedAssists": 0.0985,
                  "onTargetScoringAttempt": 0.424
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.0665035247802734,
                    "model_output": 1.0665,
                    "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.1319
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.1187
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0441
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0395
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0345
                        }
                      ],
                      "others": -0.0404,
                      "total": 1.0665,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.138789
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.110279
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.038091
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.034038
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.030646
                        }
                      ],
                      "others_margin": -0.037274
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.09422773122787476,
                    "model_output": 0.0942,
                    "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.0107
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0058
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.004
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.004
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.0118,
                      "total": 0.0942,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.117858
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.058124
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.038801
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.03876
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.035937
                        }
                      ],
                      "others_margin": -0.117952
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0955738052725792,
                    "model_output": 0.0956,
                    "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.0092
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0072
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0078
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0068
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0062
                        }
                      ],
                      "others": -0.0084,
                      "total": 0.0956,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.113853
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.090436
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.089603
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.071758
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.061917
                        }
                      ],
                      "others_margin": -0.085312
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0866057351231575,
                    "model_output": 0.0866,
                    "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.0128
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0114
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0051
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0037
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0035
                        }
                      ],
                      "others": 0.0031,
                      "total": 0.0866,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127032
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.112559
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.054465
                        },
                        {
                          "name": "goals",
                          "margin": -0.041257
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.040677
                        }
                      ],
                      "others_margin": 0.035456
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07175888866186142,
                    "model_output": 0.0718,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0136
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0108
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0069
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0061
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0044
                        }
                      ],
                      "others": -0.0066,
                      "total": 0.0718,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.149485
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.138146
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.089533
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07942
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.057831
                        }
                      ],
                      "others_margin": -0.088343
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3327041268348694,
                    "model_output": 0.3327,
                    "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.0435
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0221
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0164
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0137
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.013
                        }
                      ],
                      "others": 0.0044,
                      "total": 0.3327,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125941
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.061958
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.048537
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.042562
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.040441
                        }
                      ],
                      "others_margin": 0.013213
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0589679479599,
                    "model_output": 1.059,
                    "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.1518
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0452
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0402
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0134
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0133
                        }
                      ],
                      "others": -0.0246,
                      "total": 1.059,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.151759
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.045187
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.040217
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.013393
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.013319
                        }
                      ],
                      "others_margin": -0.024565
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.839498996734619,
                    "model_output": 6.8395,
                    "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.0303
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.023
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0164
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0126
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0078
                        }
                      ],
                      "others": -0.0127,
                      "total": 6.8395,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.030321
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.022971
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.016421
                        },
                        {
                          "name": "rating",
                          "margin": -0.012636
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.007814
                        }
                      ],
                      "others_margin": -0.012692
                    }
                  }
                ],
                "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.9938, quality 0.463)",
              "stats": {
                "key_pass": 1.0599,
                "expected_assists": 0.0936,
                "assists": 0.095,
                "assist_rate": 0.095,
                "expected_goals": 0.0861,
                "goals": 0.0713,
                "goal_rate": 0.0713,
                "shots_on_target": 0.3306,
                "total_shots": 1.0524,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1225,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 1.2412,
                "aerial_lost": 0.3044,
                "interceptions": 0.883,
                "tackles_won": 0.9877,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6379,
                "fouls_drawn": 0.6262,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.0151,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.7218
              },
              "params": {
                "market_value_eur": 5100000,
                "quality_factor": 0.4634,
                "boost_factor": 0.9938,
                "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": {
                "key_pass": 1.0599,
                "expected_assists": 0.0936,
                "assists": 0.1117,
                "assist_rate": 0.1117,
                "expected_goals": 0.0861,
                "goals": 0.0682,
                "goal_rate": 0.0682,
                "shots_on_target": 0.3163,
                "total_shots": 1.0068,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1155,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 1.2412,
                "aerial_lost": 0.3044,
                "interceptions": 0.8447,
                "tackles_won": 0.9866,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6728,
                "fouls_drawn": 0.6199,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.0151,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.7218
              },
              "params": {
                "blend_weight": 0.0433,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9617,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.0524,
                  "after": 1.0068
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.883,
                  "after": 0.8447
                },
                {
                  "stat": "fouls",
                  "before": 0.6379,
                  "after": 0.6728
                },
                {
                  "stat": "goalAssist",
                  "before": 0.095,
                  "after": 0.1117
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3306,
                  "after": 0.3163
                },
                {
                  "stat": "totalCross",
                  "before": 1.1225,
                  "after": 1.1155
                },
                {
                  "stat": "wasFouled",
                  "before": 0.6262,
                  "after": 0.6199
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.0599,
                "expected_assists": 0.0936,
                "assists": 0.1117,
                "assist_rate": 0.1117,
                "expected_goals": 0.0861,
                "goals": 0.0682,
                "goal_rate": 0.0682,
                "shots_on_target": 0.3163,
                "total_shots": 1.0381,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1155,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 1.2412,
                "aerial_lost": 0.3044,
                "interceptions": 0.8447,
                "tackles_won": 0.9866,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6728,
                "fouls_drawn": 0.6199,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.0151,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.7218
              },
              "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.0599,
                "expected_assists": 0.0936,
                "assists": 0.1117,
                "assist_rate": 0.1117,
                "expected_goals": 0.077,
                "goals": 0.061,
                "goal_rate": 0.061,
                "shots_on_target": 0.2829,
                "total_shots": 0.9286,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1155,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 0.9,
                "aerial_lost": 0.3044,
                "interceptions": 0.8447,
                "tackles_won": 0.9866,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6728,
                "fouls_drawn": 0.6199,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.0135,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.6457,
                "duel_xg_multiplier": 0.8945,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 2.1,
                "duel_win_rate": 0.388,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ainsley Maitland-Niles",
                "opponent_faced": "Ainsley Maitland-Niles",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ainsley Maitland-Niles",
                  "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                  "duel_win_rate": 0.388,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.8945,
                  "skill_edge": -0.0518,
                  "height_edge": -0.02,
                  "attacker_skill": 0.4704,
                  "defender_skill": 0.5854,
                  "attacker_role": "LM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ainsley Maitland-Niles",
                      "market_value": 10900000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.5854
                    }
                  ],
                  "xg_override": 0.077
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.2412,
                  "after": 0.9
                },
                {
                  "stat": "totalShots",
                  "before": 1.0381,
                  "after": 0.9286
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7218,
                  "after": 0.6457
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3163,
                  "after": 0.2829
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0861,
                  "after": 0.077
                },
                {
                  "stat": "goals",
                  "before": 0.0682,
                  "after": 0.061
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "key_pass": 1.0599,
                "expected_assists": 0.1116,
                "assist_rate": 0.1117,
                "assists": 0,
                "expected_goals": 0.0798,
                "goal_rate": 0.061,
                "goals": 0,
                "shots_on_target": 0.2829,
                "total_shots": 0.9286,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1155,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 0.9,
                "aerial_lost": 0.3044,
                "interceptions": 0.8447,
                "tackles_won": 0.9866,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6728,
                "fouls_drawn": 0.6199,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.014,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.6457,
                "duel_xg_multiplier": 0.8945,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 2.1,
                "duel_win_rate": 0.388,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ainsley Maitland-Niles",
                "opponent_faced": "Ainsley Maitland-Niles",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.874,
                "creation_factor": 1.126
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0936,
                  "after": 0.1116
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 6 by projected rating, fifa_overall 72.0; not used by the projection)",
              "stats": {
                "key_pass": 1.0599,
                "expected_assists": 0.1116,
                "assist_rate": 0.1117,
                "assists": 0,
                "expected_goals": 0.0798,
                "goal_rate": 0.061,
                "goals": 0,
                "shots_on_target": 0.2829,
                "total_shots": 0.9286,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1155,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 0.9,
                "aerial_lost": 0.3044,
                "interceptions": 0.8447,
                "tackles_won": 0.9866,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6728,
                "fouls_drawn": 0.6199,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.014,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.6457,
                "duel_xg_multiplier": 0.8945,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 2.1,
                "duel_win_rate": 0.388,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ainsley Maitland-Niles",
                "opponent_faced": "Ainsley Maitland-Niles",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.874,
                "creation_factor": 1.126,
                "fifa_overall": 72.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": 4157,
                "fifa_rank": 3946.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 1.0599,
                "expected_assists": 0.1116,
                "assist_rate": 0.1117,
                "assists": 0,
                "expected_goals": 0.0798,
                "goal_rate": 0.061,
                "goals": 0,
                "shots_on_target": 0.2829,
                "total_shots": 0.9286,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1155,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 0.9,
                "aerial_lost": 0.3044,
                "interceptions": 0.8447,
                "tackles_won": 0.9866,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6728,
                "fouls_drawn": 0.6199,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.014,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.6457,
                "duel_xg_multiplier": 0.8945,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 2.1,
                "duel_win_rate": 0.388,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ainsley Maitland-Niles",
                "opponent_faced": "Ainsley Maitland-Niles",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0767,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.874,
                "creation_factor": 1.126,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0767,
                "scorer_weight": 0.0697,
                "squad_weight_total": 1.0736,
                "weight_share": 0.065,
                "finishing_factor": 0.874,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 1.0599,
                "expected_assists": 0.1116,
                "assist_rate": 0.1117,
                "assists": 0,
                "expected_goals": 0.0798,
                "goal_rate": 0.061,
                "goals": 0,
                "shots_on_target": 0.2829,
                "total_shots": 0.9286,
                "rating": 6.8395,
                "minutes": 86.55,
                "total_pass": 26.5053,
                "accurate_pass": 21.3721,
                "duels_won": 4.2317,
                "total_long_balls": 2.2765,
                "accurate_long_balls": 1.028,
                "total_own_half_passes": 10.4746,
                "accurate_own_half_passes": 9.5646,
                "total_opp_half_passes": 16.0308,
                "accurate_opp_half_passes": 11.8074,
                "crosses_total": 1.1155,
                "crosses_accurate": 0.5075,
                "touches": 37.5169,
                "possession_lost": 8.1103,
                "dispossessed": 0.5724,
                "duels_lost": 2.1409,
                "aerial_won": 0.9,
                "aerial_lost": 0.3044,
                "interceptions": 0.8447,
                "tackles_won": 0.9866,
                "tackles": 1.675,
                "clearances": 0.9783,
                "total_contest": 0.6894,
                "won_contest": 0.6894,
                "challenges_lost": 0.6262,
                "fouls": 0.6728,
                "fouls_drawn": 0.6199,
                "blocks": 0.0,
                "big_chances_created": 0.3676,
                "big_chances_missed": 0.0,
                "xgot": 0.014,
                "ball_carries": 9.4048,
                "total_progression": 23.3192,
                "progressive_carries": 0.3335,
                "shots_off_target": 0.6457,
                "duel_xg_multiplier": 0.8945,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 2.1,
                "duel_win_rate": 0.388,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Ainsley Maitland-Niles",
                "opponent_faced": "Ainsley Maitland-Niles",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0767,
                "projected_assists": 0,
                "assist_probability": 0.1056,
                "finishing_factor": 0.874,
                "creation_factor": 1.126,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.1056,
                "provider_weight": 0.1257,
                "squad_weight_total": 0.7134,
                "weight_share": 0.1761,
                "creation_factor": 1.126,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 14
              }
            }
          ]
        },
        "Matt Crooks": {
          "player_id": 140479,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 25,
          "height": 193,
          "market_value": 725000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0506,
            "assist_rate": 0.0466,
            "assists": 0,
            "expected_goals": 0.0458,
            "goal_rate": 0.0491,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7467,
            "minutes": 74,
            "total_pass": 17,
            "accurate_pass": 13,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 26,
            "possession_lost": 4.9432,
            "dispossessed": 0.2773,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 2,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 2,
            "fouls": 2,
            "fouls_drawn": 0,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 8,
            "total_progression": 23,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.9563,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.42,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Harrison Armstrong",
            "opponent_faced": "Harrison Armstrong",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0448,
            "projected_assists": 0,
            "assist_probability": 0.0493,
            "finishing_factor": 1.052,
            "creation_factor": 1.0455,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1159,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 13,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 69,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 12,
                "tackles": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 15,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4478,
            "combined_rank_score": 2498.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4739.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7467,
            "source_file": "data/player_rankings.csv",
            "player_name": "Matt Crooks",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gastón Álvarez",
                  "ranking": 4473
                },
                {
                  "player_name": "Iker Losada",
                  "ranking": 4474
                },
                {
                  "player_name": "Christopher Bonsu Baah",
                  "ranking": 4475
                },
                {
                  "player_name": "Valentin Atangana",
                  "ranking": 4476
                },
                {
                  "player_name": "Alex Luna",
                  "ranking": 4477
                }
              ],
              "lower": [
                {
                  "player_name": "Lautaro Rivero",
                  "ranking": 4479
                },
                {
                  "player_name": "Robinio Vaz",
                  "ranking": 4480
                },
                {
                  "player_name": "Franco Vázquez",
                  "ranking": 4481
                },
                {
                  "player_name": "Fraser Forster",
                  "ranking": 4482
                },
                {
                  "player_name": "Rodrigo Rey",
                  "ranking": 4483
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.448,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.448,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9873,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "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 (M_service) evaluated 3 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.07, 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.5617,
                "expected_assists": 0.0429,
                "assists": 0.0485,
                "assist_rate": 0.0485,
                "expected_goals": 0.0468,
                "goals": 0.0534,
                "goal_rate": 0.0534,
                "shots_on_target": 0.1885,
                "total_shots": 0.6431,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.9572,
                "accurate_pass": 13.2313,
                "duels_won": 4.0155,
                "total_long_balls": 2.3887,
                "accurate_long_balls": 1.4966,
                "total_own_half_passes": 7.8989,
                "accurate_own_half_passes": 6.6268,
                "total_opp_half_passes": 9.0583,
                "accurate_opp_half_passes": 6.6045,
                "crosses_total": 0.3887,
                "crosses_accurate": 0.3887,
                "touches": 25.8649,
                "possession_lost": 5.0068,
                "dispossessed": 0.2809,
                "duels_lost": 3.7755,
                "aerial_won": 1.173,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.62,
                "tackles": 2.5617,
                "clearances": 1.8834,
                "total_contest": 0.3304,
                "won_contest": 0.0,
                "challenges_lost": 1.6113,
                "fouls": 1.553,
                "fouls_drawn": 0.2809,
                "blocks": 0.8921,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.7191,
                "total_progression": 23.3617,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4546
              },
              "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": "Newcastle United",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.0,
                  "creative_index": 0.184,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.0474,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5616570711135864,
                    "model_output": 0.5617,
                    "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.1129
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0886
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0802
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0361
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0301
                        }
                      ],
                      "others": -0.2024,
                      "total": 0.5617,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.119902
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.092835
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.092244
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.044435
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.038633
                        }
                      ],
                      "others_margin": -0.307803
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04289911314845085,
                    "model_output": 0.0429,
                    "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.0161
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0093
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0056
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.005
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0224,
                      "total": 0.0429,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.207694
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124778
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.073045
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.070026
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.046121
                        }
                      ],
                      "others_margin": -0.420751
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0484849251806736,
                    "model_output": 0.0485,
                    "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.0116
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0082
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0067
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.004
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0161,
                      "total": 0.0485,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.146242
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.11878
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.097543
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.057544
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.053094
                        }
                      ],
                      "others_margin": -0.285981
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04677050933241844,
                    "model_output": 0.0468,
                    "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.0345
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0147
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0056
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0054
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0061
                        }
                      ],
                      "others": -0.0043,
                      "total": 0.0468,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.454246
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.280952
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.132469
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128031
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.127309
                        }
                      ],
                      "others_margin": -0.090258
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05339740216732025,
                    "model_output": 0.0534,
                    "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.0264
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.016
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0054
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0054
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0049
                        }
                      ],
                      "others": 0.0031,
                      "total": 0.0534,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.314513
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.254682
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.093103
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.092893
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.092574
                        }
                      ],
                      "others_margin": 0.057981
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.1884724497795105,
                    "model_output": 0.1885,
                    "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.1095
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0409
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0224
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0242
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0199
                        }
                      ],
                      "others": -0.0118,
                      "total": 0.1885,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.412299
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.211702
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12127
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.116362
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.094671
                        }
                      ],
                      "others_margin": -0.060724
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6431052684783936,
                    "model_output": 0.6431,
                    "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.326
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1192
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0746
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0512
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0444
                        }
                      ],
                      "others": 0.0296,
                      "total": 0.6431,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.325983
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119221
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07459
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051187
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.044379
                        }
                      ],
                      "others_margin": 0.029559
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.74672794342041,
                    "model_output": 6.7467,
                    "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.039
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0243
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0198
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0144
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0069
                        }
                      ],
                      "others": -0.0464,
                      "total": 6.7467,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.038967
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.024302
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.019815
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.014443
                        },
                        {
                          "name": "rating",
                          "margin": -0.006913
                        }
                      ],
                      "others_margin": -0.046306
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 3,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9873, quality 0.437)",
              "stats": {
                "key_pass": 0.5545,
                "expected_assists": 0.0424,
                "assists": 0.0479,
                "assist_rate": 0.0479,
                "expected_goals": 0.0462,
                "goals": 0.0527,
                "goal_rate": 0.0527,
                "shots_on_target": 0.1861,
                "total_shots": 0.6349,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3838,
                "crosses_accurate": 0.3838,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.1581,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.5994,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5333,
                "fouls_drawn": 0.2773,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4488
              },
              "params": {
                "market_value_eur": 725000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9873,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0271)",
              "stats": {
                "key_pass": 0.5545,
                "expected_assists": 0.0424,
                "assists": 0.0466,
                "assist_rate": 0.0466,
                "expected_goals": 0.0462,
                "goals": 0.0513,
                "goal_rate": 0.0513,
                "shots_on_target": 0.1811,
                "total_shots": 0.6177,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3734,
                "crosses_accurate": 0.3838,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.1581,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.6227,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5362,
                "fouls_drawn": 0.292,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4488
              },
              "params": {
                "blend_weight": 0.0271,
                "history_matches": 3,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8193,
                "prior_reliability": 0.0667,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.5994,
                  "after": 1.6227
                },
                {
                  "stat": "totalShots",
                  "before": 0.6349,
                  "after": 0.6177
                },
                {
                  "stat": "wasFouled",
                  "before": 0.2773,
                  "after": 0.292
                },
                {
                  "stat": "totalCross",
                  "before": 0.3838,
                  "after": 0.3734
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5545,
                "expected_assists": 0.0424,
                "assists": 0.0466,
                "assist_rate": 0.0466,
                "expected_goals": 0.0462,
                "goals": 0.0513,
                "goal_rate": 0.0513,
                "shots_on_target": 0.1811,
                "total_shots": 0.6299,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3734,
                "crosses_accurate": 0.3734,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.1581,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.6227,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5362,
                "fouls_drawn": 0.292,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4488
              },
              "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.5545,
                "expected_assists": 0.0424,
                "assists": 0.0466,
                "assist_rate": 0.0466,
                "expected_goals": 0.0442,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "shots_on_target": 0.1732,
                "total_shots": 0.6024,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3734,
                "crosses_accurate": 0.3734,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.4,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.6227,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5362,
                "fouls_drawn": 0.292,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4292,
                "duel_xg_multiplier": 0.9563,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Harrison Armstrong",
                "opponent_faced": "Harrison Armstrong",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Harrison Armstrong",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.42,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9563,
                  "skill_edge": -0.0618,
                  "height_edge": 0.032,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.5747,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Harrison Armstrong",
                      "market_value": 12400000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.5747
                    }
                  ],
                  "xg_override": 0.0442
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.1581,
                  "after": 1.4
                },
                {
                  "stat": "totalShots",
                  "before": 0.6299,
                  "after": 0.6024
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4488,
                  "after": 0.4292
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1811,
                  "after": 0.1732
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5545,
                "expected_assists": 0.0506,
                "assist_rate": 0.0466,
                "assists": 0,
                "expected_goals": 0.0458,
                "goal_rate": 0.0491,
                "goals": 0,
                "shots_on_target": 0.1732,
                "total_shots": 0.6024,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3734,
                "crosses_accurate": 0.3734,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.4,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.6227,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5362,
                "fouls_drawn": 0.292,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4292,
                "duel_xg_multiplier": 0.9563,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Harrison Armstrong",
                "opponent_faced": "Harrison Armstrong",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.052,
                "creation_factor": 1.0455
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0424,
                  "after": 0.0506
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 11 by projected rating, fifa_overall 71.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5545,
                "expected_assists": 0.0506,
                "assist_rate": 0.0466,
                "assists": 0,
                "expected_goals": 0.0458,
                "goal_rate": 0.0491,
                "goals": 0,
                "shots_on_target": 0.1732,
                "total_shots": 0.6024,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3734,
                "crosses_accurate": 0.3734,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.4,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.6227,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5362,
                "fouls_drawn": 0.292,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4292,
                "duel_xg_multiplier": 0.9563,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Harrison Armstrong",
                "opponent_faced": "Harrison Armstrong",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.052,
                "creation_factor": 1.0455,
                "fifa_overall": 71.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": 4478,
                "fifa_rank": 4739.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5545,
                "expected_assists": 0.0506,
                "assist_rate": 0.0466,
                "assists": 0,
                "expected_goals": 0.0458,
                "goal_rate": 0.0491,
                "goals": 0,
                "shots_on_target": 0.1732,
                "total_shots": 0.6024,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3734,
                "crosses_accurate": 0.3734,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.4,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.6227,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5362,
                "fouls_drawn": 0.292,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4292,
                "duel_xg_multiplier": 0.9563,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Harrison Armstrong",
                "opponent_faced": "Harrison Armstrong",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0448,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.052,
                "creation_factor": 1.0455,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0448,
                "scorer_weight": 0.0482,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0449,
                "finishing_factor": 1.052,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5545,
                "expected_assists": 0.0506,
                "assist_rate": 0.0466,
                "assists": 0,
                "expected_goals": 0.0458,
                "goal_rate": 0.0491,
                "goals": 0,
                "shots_on_target": 0.1732,
                "total_shots": 0.6024,
                "rating": 6.7467,
                "minutes": 73.74,
                "total_pass": 16.7418,
                "accurate_pass": 13.0633,
                "duels_won": 3.9645,
                "total_long_balls": 2.3584,
                "accurate_long_balls": 1.4776,
                "total_own_half_passes": 7.7986,
                "accurate_own_half_passes": 6.5426,
                "total_opp_half_passes": 8.9433,
                "accurate_opp_half_passes": 6.5206,
                "crosses_total": 0.3734,
                "crosses_accurate": 0.3734,
                "touches": 25.5364,
                "possession_lost": 4.9432,
                "dispossessed": 0.2773,
                "duels_lost": 3.7276,
                "aerial_won": 1.4,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 1.6227,
                "tackles": 2.5292,
                "clearances": 1.8595,
                "total_contest": 0.3262,
                "won_contest": 0.0,
                "challenges_lost": 1.5908,
                "fouls": 1.5362,
                "fouls_drawn": 0.292,
                "blocks": 0.8808,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 7.6211,
                "total_progression": 23.065,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4292,
                "duel_xg_multiplier": 0.9563,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Harrison Armstrong",
                "opponent_faced": "Harrison Armstrong",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0448,
                "projected_assists": 0,
                "assist_probability": 0.0493,
                "finishing_factor": 1.052,
                "creation_factor": 1.0455,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0493,
                "provider_weight": 0.0529,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0742,
                "creation_factor": 1.0455,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 14
              }
            }
          ]
        },
        "Ryan Giles": {
          "player_id": 931304,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 179,
          "market_value": 10900000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.6601,
            "minutes": 90,
            "total_pass": 19,
            "accurate_pass": 15,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 10,
            "crosses_total": 9,
            "crosses_accurate": 2,
            "touches": 43,
            "possession_lost": 14.9323,
            "dispossessed": 0.2302,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.2207,
            "assists": 0,
            "expected_goals": 0.0031,
            "expected_assists": 0.1103,
            "shots_on_target": 0,
            "big_chances_created": 1,
            "xgot": 0.0,
            "ball_carries": 11,
            "total_progression": 90,
            "progressive_carries": 3,
            "key_pass": 2,
            "shots_off_target": 0,
            "opponent_faced": "Ainsley Maitland-Niles, Jordan Pickford",
            "matchup_zone": "LWB vs RW + RB",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0031,
            "projected_assists": 0,
            "assist_probability": 0.1044,
            "finishing_factor": 0.9434,
            "creation_factor": 1.25,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0833,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 19,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "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": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1694,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 11,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0414,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 15,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.075,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 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": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 85,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.021,
                "expected_assists": 0.0733,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4101,
            "combined_rank_score": 2088.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 229.0,
            "sofascore_rating": 7.15,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3948.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6601,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ryan Giles",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kaine Kesler-Hayden",
                  "ranking": 4096
                },
                {
                  "player_name": "Luke Woolfenden",
                  "ranking": 4097
                },
                {
                  "player_name": "Adam Smith",
                  "ranking": 4098
                },
                {
                  "player_name": "Dayne St. Clair",
                  "ranking": 4099
                },
                {
                  "player_name": "Kieffer Moore",
                  "ranking": 4100
                }
              ],
              "lower": [
                {
                  "player_name": "Alex Tóth",
                  "ranking": 4102
                },
                {
                  "player_name": "Victor Torp",
                  "ranking": 4103
                },
                {
                  "player_name": "Dro Fernández",
                  "ranking": 4104
                },
                {
                  "player_name": "Agustín Sández",
                  "ranking": 4105
                },
                {
                  "player_name": "Axel Tuanzebe",
                  "ranking": 4106
                }
              ]
            }
          },
          "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.0042,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 174.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.52,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, 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.8499,
                "tackles": 1.4212,
                "tackles_won": 0.8338,
                "clearances": 2.5637,
                "aerial_won": 0.9076,
                "total_shots": 0.4524,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.3747,
                "accurate_pass": 15.0955,
                "duels_won": 2.5399,
                "total_long_balls": 2.6148,
                "accurate_long_balls": 0.7341,
                "total_own_half_passes": 6.2734,
                "accurate_own_half_passes": 4.9806,
                "total_opp_half_passes": 13.1013,
                "accurate_opp_half_passes": 10.1149,
                "crosses_total": 9.1615,
                "crosses_accurate": 2.4081,
                "touches": 42.8492,
                "possession_lost": 14.8698,
                "dispossessed": 0.2292,
                "duels_lost": 1.7144,
                "aerial_lost": 0.3063,
                "total_contest": 0.9289,
                "won_contest": 0.3896,
                "ball_recovery": 2.7749,
                "challenges_lost": 0.3699,
                "fouls": 0.2696,
                "fouls_drawn": 0.2292,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2292,
                "assist_rate": 0.2292,
                "expected_goals": 0.003,
                "expected_assists": 0.0921,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6532,
                "xgot": 0.0,
                "ball_carries": 11.2964,
                "total_progression": 89.6607,
                "progressive_carries": 2.546,
                "key_pass": 1.6937,
                "shots_off_target": 0.4524
              },
              "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": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.0731,
                  "aerialWon": 0.9211,
                  "totalClearance_p90": 3.1063,
                  "totalTackle": 1.0,
                  "totalPass": 19.3747
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8498580455780029,
                    "model_output": 0.8499,
                    "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.1057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0604
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.047
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0237
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0229
                        }
                      ],
                      "others": -0.0531,
                      "total": 0.8499,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.116294
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.064792
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.05073
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.025282
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.025094
                        }
                      ],
                      "others_margin": -0.060542
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.421168327331543,
                    "model_output": 1.4212,
                    "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.1844
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1266
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0627
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.059
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0524
                        }
                      ],
                      "others": 0.0182,
                      "total": 1.4212,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124226
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.083631
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.042283
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.039707
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.036649
                        }
                      ],
                      "others_margin": 0.012868
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8337597250938416,
                    "model_output": 0.8338,
                    "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.1041
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0793
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0386
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0289
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0251
                        }
                      ],
                      "others": 0.0472,
                      "total": 0.8338,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114974
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.086361
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.044882
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.034989
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.031458
                        }
                      ],
                      "others_margin": 0.058318
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.5637080669403076,
                    "model_output": 2.5637,
                    "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.461
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3745
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3103
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2682
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1007
                        }
                      ],
                      "others": -0.295,
                      "total": 2.5637,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125364
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.100605
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.091805
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.086741
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.034604
                        }
                      ],
                      "others_margin": -0.108938
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9076322317123413,
                    "model_output": 0.9076,
                    "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.2612
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1506
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0907
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0738
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0499
                        }
                      ],
                      "others": -0.1494,
                      "total": 0.9076,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.20951
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126057
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.073983
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.064536
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.046089
                        }
                      ],
                      "others_margin": -0.152408
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.45242518186569214,
                    "model_output": 0.4524,
                    "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.0934
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0496
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0242
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0231
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0213
                        }
                      ],
                      "others": -0.0009,
                      "total": 0.4524,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.093446
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.049554
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.024191
                        },
                        {
                          "name": "error_severity",
                          "margin": 0.02308
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.021256
                        }
                      ],
                      "others_margin": -0.00083
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.660065650939941,
                    "model_output": 6.6601,
                    "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.0439
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0344
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0212
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0175
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0161
                        }
                      ],
                      "others": -0.0607,
                      "total": 6.6601,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.043931
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.03439
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.021236
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.01751
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.016096
                        }
                      ],
                      "others_margin": -0.060685
                    }
                  }
                ],
                "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.0042, quality 0.533)",
              "stats": {
                "interceptions": 0.8534,
                "tackles": 1.4271,
                "tackles_won": 0.8373,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4543,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.2,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2707,
                "fouls_drawn": 0.2302,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2302,
                "assist_rate": 0.2302,
                "expected_goals": 0.003,
                "expected_assists": 0.0925,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543
              },
              "params": {
                "market_value_eur": 10900000,
                "quality_factor": 0.533,
                "boost_factor": 1.0042,
                "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.0412)",
              "stats": {
                "interceptions": 0.8398,
                "tackles": 1.4271,
                "tackles_won": 0.8459,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4569,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.1013,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2596,
                "fouls_drawn": 0.2207,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2207,
                "assist_rate": 0.2207,
                "expected_goals": 0.003,
                "expected_assists": 0.0925,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543
              },
              "params": {
                "blend_weight": 0.0412,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9944,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 9.2,
                  "after": 9.1013
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.8534,
                  "after": 0.8398
                },
                {
                  "stat": "fouls",
                  "before": 0.2707,
                  "after": 0.2596
                },
                {
                  "stat": "wasFouled",
                  "before": 0.2302,
                  "after": 0.2207
                },
                {
                  "stat": "goalAssist",
                  "before": 0.2302,
                  "after": 0.2207
                },
                {
                  "stat": "wonTackle",
                  "before": 0.8373,
                  "after": 0.8459
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8398,
                "tackles": 1.4271,
                "tackles_won": 0.8459,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4569,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.1013,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2596,
                "fouls_drawn": 0.2207,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2207,
                "assist_rate": 0.2207,
                "expected_goals": 0.003,
                "expected_assists": 0.0925,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543
              },
              "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.8398,
                "tackles": 1.4271,
                "tackles_won": 0.8459,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4569,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.1013,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2596,
                "fouls_drawn": 0.2207,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2207,
                "assist_rate": 0.2207,
                "expected_goals": 0.003,
                "expected_assists": 0.0925,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543,
                "opponent_faced": "Ainsley Maitland-Niles, Jordan Pickford",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ainsley Maitland-Niles, Jordan Pickford",
                  "matchup_zone": "LWB vs RW + RB"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.8398,
                "tackles": 1.4271,
                "tackles_won": 0.8459,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4569,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.1013,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2596,
                "fouls_drawn": 0.2207,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2207,
                "assists": 0,
                "expected_goals": 0.0031,
                "expected_assists": 0.1103,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543,
                "opponent_faced": "Ainsley Maitland-Niles, Jordan Pickford",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9434,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0925,
                  "after": 0.1103
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 15 by projected rating, fifa_overall 72.0; not used by the projection)",
              "stats": {
                "interceptions": 0.8398,
                "tackles": 1.4271,
                "tackles_won": 0.8459,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4569,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.1013,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2596,
                "fouls_drawn": 0.2207,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2207,
                "assists": 0,
                "expected_goals": 0.0031,
                "expected_assists": 0.1103,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543,
                "opponent_faced": "Ainsley Maitland-Niles, Jordan Pickford",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9434,
                "creation_factor": 1.25,
                "fifa_overall": 72.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": 4101,
                "fifa_rank": 3948.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.8398,
                "tackles": 1.4271,
                "tackles_won": 0.8459,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4569,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.1013,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2596,
                "fouls_drawn": 0.2207,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2207,
                "assists": 0,
                "expected_goals": 0.0031,
                "expected_assists": 0.1103,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543,
                "opponent_faced": "Ainsley Maitland-Niles, Jordan Pickford",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0031,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9434,
                "creation_factor": 1.25,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0031,
                "scorer_weight": 0.0029,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0027,
                "finishing_factor": 0.9434,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.8398,
                "tackles": 1.4271,
                "tackles_won": 0.8459,
                "clearances": 2.5745,
                "aerial_won": 0.9114,
                "total_shots": 0.4569,
                "rating": 6.6601,
                "minutes": 89.5,
                "total_pass": 19.4561,
                "accurate_pass": 15.1589,
                "duels_won": 2.5506,
                "total_long_balls": 2.6258,
                "accurate_long_balls": 0.7372,
                "total_own_half_passes": 6.2997,
                "accurate_own_half_passes": 5.0015,
                "total_opp_half_passes": 13.1563,
                "accurate_opp_half_passes": 10.1574,
                "crosses_total": 9.1013,
                "crosses_accurate": 2.4182,
                "touches": 43.0292,
                "possession_lost": 14.9323,
                "dispossessed": 0.2302,
                "duels_lost": 1.7216,
                "aerial_lost": 0.3076,
                "total_contest": 0.9328,
                "won_contest": 0.3912,
                "ball_recovery": 2.7866,
                "challenges_lost": 0.3715,
                "fouls": 0.2596,
                "fouls_drawn": 0.2207,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2207,
                "assists": 0,
                "expected_goals": 0.0031,
                "expected_assists": 0.1103,
                "shots_on_target": 0.0,
                "big_chances_created": 0.6559,
                "xgot": 0.0,
                "ball_carries": 11.3438,
                "total_progression": 90.0373,
                "progressive_carries": 2.5567,
                "key_pass": 1.7008,
                "shots_off_target": 0.4543,
                "opponent_faced": "Ainsley Maitland-Niles, Jordan Pickford",
                "matchup_zone": "LWB vs RW + RB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0031,
                "projected_assists": 0,
                "assist_probability": 0.1044,
                "finishing_factor": 0.9434,
                "creation_factor": 1.25,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.1044,
                "provider_weight": 0.1379,
                "squad_weight_total": 0.7134,
                "weight_share": 0.1933,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14
              }
            }
          ]
        },
        "Nobel Mendy": {
          "player_id": 1458073,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 32,
          "height": 187,
          "market_value": 7700000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.8164,
            "minutes": 72,
            "total_pass": 31,
            "accurate_pass": 26,
            "duels_won": 3,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 21,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 46,
            "possession_lost": 6.028,
            "dispossessed": 0.1719,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.1421,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0462,
            "expected_assists": 0.011,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0857,
            "ball_carries": 11,
            "total_progression": 31,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.8,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.67,
            "opponent_faced": "Thierno Barry",
            "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.0451,
            "projected_assists": 0,
            "assist_probability": 0.0109,
            "finishing_factor": 1.25,
            "creation_factor": 0.8446,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 59,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 71,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0258,
                "expected_assists": 0.0017,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 59,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0107,
                "expected_assists": 0.0028,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 27,
                "accurate_pass": 21,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "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": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 64,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2783,
                "expected_assists": 0.0017,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 19,
                "accurate_pass": 18,
                "clearances": 12,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083706,
              "match_date": "2026-05-23",
              "home_team": "Deportivo Alavés",
              "away_team": "Rayo Vallecano",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 35,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 13,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083598,
              "match_date": "2026-05-11",
              "home_team": "Rayo Vallecano",
              "away_team": "Girona FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Rayo Vallecano",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 9,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083440,
              "match_date": "2026-05-03",
              "home_team": "Getafe",
              "away_team": "Rayo Vallecano",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 16,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083239,
              "match_date": "2026-04-26",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 64,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1418,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 25,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083142,
              "match_date": "2026-04-12",
              "home_team": "Mallorca",
              "away_team": "Rayo Vallecano",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 45,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3293,
            "combined_rank_score": 1240.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 62.0,
            "sofascore_rating": 7.65,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2419.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8164,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nobel Mendy",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Brooke Norton-Cuffy",
                  "ranking": 3288
                },
                {
                  "player_name": "Brenden Aaronson",
                  "ranking": 3289
                },
                {
                  "player_name": "Guruzeta",
                  "ranking": 3290
                },
                {
                  "player_name": "Igor Matanović",
                  "ranking": 3291
                },
                {
                  "player_name": "Ionuț Andrei Radu",
                  "ranking": 3292
                }
              ],
              "lower": [
                {
                  "player_name": "Michael Zetterer",
                  "ranking": 3294
                },
                {
                  "player_name": "Lukas Nmecha",
                  "ranking": 3295
                },
                {
                  "player_name": "Ruslan Malinovskyi",
                  "ranking": 3296
                },
                {
                  "player_name": "Ibrahim Mbaye",
                  "ranking": 3297
                },
                {
                  "player_name": "Unai Núñez",
                  "ranking": 3298
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "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.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9995,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 121.0,
              "goals_per90": 0.7692307692307692,
              "assists_per90": 0.0,
              "shots_per90": 1.49,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (D_service) evaluated 28 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.09, gls/90: 0.7692307692307692, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.9904,
                "tackles": 1.4666,
                "tackles_won": 0.8422,
                "clearances": 5.8968,
                "aerial_won": 1.8211,
                "total_shots": 0.541,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4704,
                "accurate_pass": 26.2483,
                "duels_won": 3.4194,
                "total_long_balls": 5.3655,
                "accurate_long_balls": 2.1252,
                "total_own_half_passes": 22.1446,
                "accurate_own_half_passes": 20.7093,
                "total_opp_half_passes": 9.3258,
                "accurate_opp_half_passes": 5.539,
                "crosses_total": 0.1719,
                "crosses_accurate": 0.0,
                "touches": 45.9426,
                "possession_lost": 6.031,
                "dispossessed": 0.172,
                "duels_lost": 2.6106,
                "aerial_lost": 1.0717,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2435,
                "challenges_lost": 0.3893,
                "fouls": 1.0945,
                "fouls_drawn": 0.4554,
                "blocks": 1.1689,
                "goals": 0.1381,
                "goal_rate": 0.1381,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0446,
                "expected_assists": 0.0092,
                "shots_on_target": 0.3572,
                "big_chances_created": 0.0518,
                "xgot": 0.0827,
                "ball_carries": 10.5306,
                "total_progression": 31.4801,
                "progressive_carries": 0.4061,
                "key_pass": 0.0715,
                "shots_off_target": 0.1838
              },
              "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": "Chelsea",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0673,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-11",
                    "opponent": "Girona FC",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0572,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0486,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Real Sociedad",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0413,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Mallorca",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 5.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.3579,
                  "aerialWon": 1.3961,
                  "totalClearance_p90": 8.0465,
                  "totalTackle": 1.6059,
                  "totalPass": 29.4254
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9904292821884155,
                    "model_output": 0.9904,
                    "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.1029
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0332
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0273
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0183
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0132
                        }
                      ],
                      "others": 0.0012,
                      "total": 0.9904,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113352
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.034024
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.027134
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.018139
                        },
                        {
                          "name": "touches",
                          "margin": -0.013263
                        }
                      ],
                      "others_margin": 0.001275
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4666173458099365,
                    "model_output": 1.4666,
                    "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.1718
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0588
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0499
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0397
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0294
                        }
                      ],
                      "others": -0.1183,
                      "total": 1.4666,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.116229
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.036841
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.031196
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.024894
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.018392
                        }
                      ],
                      "others_margin": -0.077506
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8421592712402344,
                    "model_output": 0.8422,
                    "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.109
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0448
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0444
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0351
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0279
                        }
                      ],
                      "others": -0.0578,
                      "total": 0.8422,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12006
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.04763
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.047155
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.037118
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.030541
                        }
                      ],
                      "others_margin": -0.066299
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.896814346313477,
                    "model_output": 5.8968,
                    "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.7711
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5844
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3919
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3715
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1874
                        }
                      ],
                      "others": 0.1391,
                      "total": 5.8968,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.201641
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129624
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.078376
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.069019
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.033088
                        }
                      ],
                      "others_margin": 0.023881
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.8211227655410767,
                    "model_output": 1.8211,
                    "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.1801
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.186
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1798
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1297
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1128
                        }
                      ],
                      "others": -0.0899,
                      "total": 1.8211,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122476
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.112486
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.097881
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.069672
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.060869
                        }
                      ],
                      "others_margin": -0.04814
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5409703850746155,
                    "model_output": 0.541,
                    "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.0659
                        },
                        {
                          "name": "rating",
                          "contribution": 0.034
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0276
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0206
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0179
                        }
                      ],
                      "others": -0.0603,
                      "total": 0.541,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.065927
                        },
                        {
                          "name": "rating",
                          "margin": 0.034048
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.027619
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.020618
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.01789
                        }
                      ],
                      "others_margin": -0.060483
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.816425800323486,
                    "model_output": 6.8164,
                    "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": "totalClearance_p90",
                          "contribution": 0.019
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0167
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0141
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0097
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0091
                        }
                      ],
                      "others": 0.0003,
                      "total": 6.8164,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.019005
                        },
                        {
                          "name": "rating",
                          "margin": 0.016681
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.014144
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.009683
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.009121
                        }
                      ],
                      "others_margin": 0.000266
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 28,
                  "role_matches": 26,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9995, quality 0.495)",
              "stats": {
                "interceptions": 0.9899,
                "tackles": 1.4659,
                "tackles_won": 0.8417,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5407,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1718,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.094,
                "fouls_drawn": 0.4552,
                "blocks": 1.1683,
                "goals": 0.138,
                "goal_rate": 0.138,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0446,
                "expected_assists": 0.0092,
                "shots_on_target": 0.357,
                "big_chances_created": 0.0518,
                "xgot": 0.0827,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837
              },
              "params": {
                "market_value_eur": 7700000,
                "quality_factor": 0.4951,
                "boost_factor": 0.9995,
                "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.0085)",
              "stats": {
                "interceptions": 0.9814,
                "tackles": 1.4659,
                "tackles_won": 0.8398,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5463,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1703,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.0899,
                "fouls_drawn": 0.4513,
                "blocks": 1.1683,
                "goals": 0.1421,
                "goal_rate": 0.1421,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0446,
                "expected_assists": 0.0092,
                "shots_on_target": 0.3642,
                "big_chances_created": 0.0518,
                "xgot": 0.0827,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837
              },
              "params": {
                "blend_weight": 0.0085,
                "history_matches": 28,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8049,
                "prior_reliability": 0.0867,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 0.9899,
                  "after": 0.9814
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.357,
                  "after": 0.3642
                },
                {
                  "stat": "totalShots",
                  "before": 0.5407,
                  "after": 0.5463
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9814,
                "tackles": 1.4659,
                "tackles_won": 0.8398,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5479,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1703,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.0899,
                "fouls_drawn": 0.4513,
                "blocks": 1.1683,
                "goals": 0.1421,
                "goal_rate": 0.1421,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0446,
                "expected_assists": 0.0092,
                "shots_on_target": 0.3642,
                "big_chances_created": 0.0518,
                "xgot": 0.0827,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837
              },
              "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.9814,
                "tackles": 1.4659,
                "tackles_won": 0.8398,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5479,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1703,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.0899,
                "fouls_drawn": 0.4513,
                "blocks": 1.1683,
                "goals": 0.1421,
                "goal_rate": 0.1421,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0446,
                "expected_assists": 0.0092,
                "shots_on_target": 0.3642,
                "big_chances_created": 0.0518,
                "xgot": 0.0827,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.4,
                "defensive_success_rate": 0.67,
                "opponent_faced": "Thierno Barry",
                "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": "Thierno Barry",
                  "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.9814,
                "tackles": 1.4659,
                "tackles_won": 0.8398,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5479,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1703,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.0899,
                "fouls_drawn": 0.4513,
                "blocks": 1.1683,
                "goal_rate": 0.1421,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0462,
                "expected_assists": 0.011,
                "shots_on_target": 0.3642,
                "big_chances_created": 0.0518,
                "xgot": 0.0857,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.4,
                "defensive_success_rate": 0.67,
                "opponent_faced": "Thierno Barry",
                "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.8446
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 7 by projected rating, fifa_overall 75.0; not used by the projection)",
              "stats": {
                "interceptions": 0.9814,
                "tackles": 1.4659,
                "tackles_won": 0.8398,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5479,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1703,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.0899,
                "fouls_drawn": 0.4513,
                "blocks": 1.1683,
                "goal_rate": 0.1421,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0462,
                "expected_assists": 0.011,
                "shots_on_target": 0.3642,
                "big_chances_created": 0.0518,
                "xgot": 0.0857,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.4,
                "defensive_success_rate": 0.67,
                "opponent_faced": "Thierno Barry",
                "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.8446,
                "fifa_overall": 75.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": 3293,
                "fifa_rank": 2419.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.9814,
                "tackles": 1.4659,
                "tackles_won": 0.8398,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5479,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1703,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.0899,
                "fouls_drawn": 0.4513,
                "blocks": 1.1683,
                "goal_rate": 0.1421,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0462,
                "expected_assists": 0.011,
                "shots_on_target": 0.3642,
                "big_chances_created": 0.0518,
                "xgot": 0.0857,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.4,
                "defensive_success_rate": 0.67,
                "opponent_faced": "Thierno Barry",
                "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.0451,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8446,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0451,
                "scorer_weight": 0.0577,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0538,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.9814,
                "tackles": 1.4659,
                "tackles_won": 0.8398,
                "clearances": 5.8939,
                "aerial_won": 1.8202,
                "total_shots": 0.5479,
                "rating": 6.8164,
                "minutes": 72.44,
                "total_pass": 31.4547,
                "accurate_pass": 26.2352,
                "duels_won": 3.4177,
                "total_long_balls": 5.3628,
                "accurate_long_balls": 2.1241,
                "total_own_half_passes": 22.1335,
                "accurate_own_half_passes": 20.6989,
                "total_opp_half_passes": 9.3211,
                "accurate_opp_half_passes": 5.5362,
                "crosses_total": 0.1703,
                "crosses_accurate": 0.0,
                "touches": 45.9196,
                "possession_lost": 6.028,
                "dispossessed": 0.1719,
                "duels_lost": 2.6093,
                "aerial_lost": 1.0712,
                "total_contest": 0.0231,
                "won_contest": 0.02,
                "ball_recovery": 2.2424,
                "challenges_lost": 0.3891,
                "fouls": 1.0899,
                "fouls_drawn": 0.4513,
                "blocks": 1.1683,
                "goal_rate": 0.1421,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0462,
                "expected_assists": 0.011,
                "shots_on_target": 0.3642,
                "big_chances_created": 0.0518,
                "xgot": 0.0857,
                "ball_carries": 10.5253,
                "total_progression": 31.4644,
                "progressive_carries": 0.4059,
                "key_pass": 0.0715,
                "shots_off_target": 0.1837,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.8,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.4,
                "defensive_success_rate": 0.67,
                "opponent_faced": "Thierno Barry",
                "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.0451,
                "projected_assists": 0,
                "assist_probability": 0.0109,
                "finishing_factor": 1.25,
                "creation_factor": 0.8446,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0109,
                "provider_weight": 0.0093,
                "squad_weight_total": 0.7134,
                "weight_share": 0.013,
                "creation_factor": 0.8446,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 14
              }
            }
          ]
        },
        "John Egan": {
          "player_id": 100578,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 15,
          "height": 185,
          "market_value": 970000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.7296,
            "minutes": 88,
            "total_pass": 25,
            "accurate_pass": 20,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 38,
            "possession_lost": 5.8038,
            "dispossessed": 0.1639,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0124,
            "expected_assists": 0.0025,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0054,
            "ball_carries": 7,
            "total_progression": 30,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Jack Grealish",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0123,
            "projected_assists": 0,
            "assist_probability": 0.0025,
            "finishing_factor": 0.8065,
            "creation_factor": 0.9597,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 78,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0085,
                "expected_assists": 0.0014,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "tackles": 2,
                "tackles_won": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0428,
                "expected_assists": 0.0026,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 29,
                "accurate_pass": 23,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 10,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 13,
                "tackles": 3,
                "interceptions": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 20,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 10,
                "aerial_won": 5,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 25,
                "tackles": 1,
                "clearances": 17,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 4038,
            "combined_rank_score": 2020.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 108.0,
            "sofascore_rating": 7.45,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3933.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7296,
            "source_file": "data/player_rankings.csv",
            "player_name": "John Egan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Matias Moreno",
                  "ranking": 4033
                },
                {
                  "player_name": "Fresneda",
                  "ranking": 4034
                },
                {
                  "player_name": "Leonardo Lelo",
                  "ranking": 4035
                },
                {
                  "player_name": "Harrison Armstrong",
                  "ranking": 4036
                },
                {
                  "player_name": "Gastón Benedetti",
                  "ranking": 4037
                }
              ],
              "lower": [
                {
                  "player_name": "Vitalii Buialskii",
                  "ranking": 4039
                },
                {
                  "player_name": "Raul Florucz",
                  "ranking": 4040
                },
                {
                  "player_name": "Nahuel Guzmán",
                  "ranking": 4041
                },
                {
                  "player_name": "Lucas Ocampos",
                  "ranking": 4042
                },
                {
                  "player_name": "Oussama Idrissi",
                  "ranking": 4043
                }
              ]
            }
          },
          "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": "Hull City",
              "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 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, 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.1325,
                "tackles": 1.4607,
                "tackles_won": 1.0124,
                "clearances": 5.4941,
                "aerial_won": 2.0164,
                "total_shots": 0.5008,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.9566,
                "accurate_pass": 19.758,
                "duels_won": 3.5104,
                "total_long_balls": 2.0419,
                "accurate_long_balls": 0.8052,
                "total_own_half_passes": 16.1551,
                "accurate_own_half_passes": 15.1843,
                "total_opp_half_passes": 8.8014,
                "accurate_opp_half_passes": 4.5736,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.7941,
                "possession_lost": 5.863,
                "dispossessed": 0.1656,
                "duels_lost": 2.048,
                "aerial_lost": 1.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.4275,
                "challenges_lost": 0.2292,
                "fouls": 0.6532,
                "fouls_drawn": 0.1656,
                "blocks": 0.8867,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0121,
                "expected_assists": 0.0021,
                "shots_on_target": 0.2696,
                "big_chances_created": 0.0,
                "xgot": 0.0053,
                "ball_carries": 7.387,
                "total_progression": 30.0372,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2312
              },
              "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": "Newcastle United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.8052,
                  "aerialWon": 1.6219,
                  "totalClearance_p90": 6.8467,
                  "totalTackle": 1.8885,
                  "totalPass": 24.9566
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1325359344482422,
                    "model_output": 1.1325,
                    "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.0985
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0894
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0358
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0331
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.027
                        }
                      ],
                      "others": -0.0086,
                      "total": 1.1325,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.108813
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.089386
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.0337
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.030162
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.023966
                        }
                      ],
                      "others_margin": -0.007568
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.460678219795227,
                    "model_output": 1.4607,
                    "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.1873
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.1013
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0528
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.052
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0511
                        }
                      ],
                      "others": -0.1751,
                      "total": 1.4607,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126064
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.066229
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.03503
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.033336
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.03175
                        }
                      ],
                      "others_margin": -0.113138
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0124038457870483,
                    "model_output": 1.0124,
                    "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": "defensive_actions",
                          "contribution": 0.0888
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0599
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0583
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0291
                        }
                      ],
                      "others": -0.0106,
                      "total": 1.0124,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121626
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.088034
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.058561
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.057009
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.028067
                        }
                      ],
                      "others_margin": -0.0103
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.494148254394531,
                    "model_output": 5.4941,
                    "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.8961
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.6081
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.4496
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.3615
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3433
                        }
                      ],
                      "others": 0.1071,
                      "total": 5.4941,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.230825
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.130913
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.08684
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.06922
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.06584
                        }
                      ],
                      "others_margin": 0.019703
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.016387701034546,
                    "model_output": 2.0164,
                    "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.1535
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1557
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1581
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0839
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0798
                        }
                      ],
                      "others": 0.0034,
                      "total": 2.0164,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.105322
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.096602
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.089382
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.044354
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.04043
                        }
                      ],
                      "others_margin": 0.001664
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5008437037467957,
                    "model_output": 0.5008,
                    "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.0565
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.046
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0183
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0111
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0352,
                      "total": 0.5008,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.056501
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.045985
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.018324
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.011104
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.008176
                        }
                      ],
                      "others_margin": -0.03517
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.729610919952393,
                    "model_output": 6.7296,
                    "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.0408
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0227
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0198
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0182
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.013
                        }
                      ],
                      "others": 0.0136,
                      "total": 6.7296,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.040806
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.022668
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.019822
                        },
                        {
                          "name": "touches",
                          "margin": -0.018222
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013026
                        }
                      ],
                      "others_margin": 0.013689
                    }
                  }
                ],
                "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": 1.1211,
                "tackles": 1.4459,
                "tackles_won": 1.0022,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4958,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6466,
                "fouls_drawn": 0.1639,
                "blocks": 0.8777,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.012,
                "expected_assists": 0.0021,
                "shots_on_target": 0.2669,
                "big_chances_created": 0.0,
                "xgot": 0.0052,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289
              },
              "params": {
                "market_value_eur": 970000,
                "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": 1.1147,
                "tackles": 1.4459,
                "tackles_won": 0.9799,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4743,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6186,
                "fouls_drawn": 0.1779,
                "blocks": 0.8777,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.012,
                "expected_assists": 0.0021,
                "shots_on_target": 0.2553,
                "big_chances_created": 0.0,
                "xgot": 0.0052,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289
              },
              "params": {
                "blend_weight": 0.0433,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9743,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.6466,
                  "after": 0.6186
                },
                {
                  "stat": "wonTackle",
                  "before": 1.0022,
                  "after": 0.9799
                },
                {
                  "stat": "totalShots",
                  "before": 0.4958,
                  "after": 0.4743
                },
                {
                  "stat": "wasFouled",
                  "before": 0.1639,
                  "after": 0.1779
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2669,
                  "after": 0.2553
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1211,
                  "after": 1.1147
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1147,
                "tackles": 1.4459,
                "tackles_won": 0.9799,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4842,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6186,
                "fouls_drawn": 0.1779,
                "blocks": 0.8777,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.012,
                "expected_assists": 0.0021,
                "shots_on_target": 0.2553,
                "big_chances_created": 0.0,
                "xgot": 0.0052,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289
              },
              "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.1147,
                "tackles": 1.4459,
                "tackles_won": 0.9799,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4842,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6186,
                "fouls_drawn": 0.1779,
                "blocks": 0.8777,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.012,
                "expected_assists": 0.0021,
                "shots_on_target": 0.2553,
                "big_chances_created": 0.0,
                "xgot": 0.0052,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289,
                "opponent_faced": "Jack Grealish",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jack Grealish",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.1147,
                "tackles": 1.4459,
                "tackles_won": 0.9799,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4842,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6186,
                "fouls_drawn": 0.1779,
                "blocks": 0.8777,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0124,
                "expected_assists": 0.0025,
                "shots_on_target": 0.2553,
                "big_chances_created": 0.0,
                "xgot": 0.0054,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289,
                "opponent_faced": "Jack Grealish",
                "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.8065,
                "creation_factor": 0.9597
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 12 by projected rating, fifa_overall 72.0; not used by the projection)",
              "stats": {
                "interceptions": 1.1147,
                "tackles": 1.4459,
                "tackles_won": 0.9799,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4842,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6186,
                "fouls_drawn": 0.1779,
                "blocks": 0.8777,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0124,
                "expected_assists": 0.0025,
                "shots_on_target": 0.2553,
                "big_chances_created": 0.0,
                "xgot": 0.0054,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289,
                "opponent_faced": "Jack Grealish",
                "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.8065,
                "creation_factor": 0.9597,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4038,
                "fifa_rank": 3933.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.1147,
                "tackles": 1.4459,
                "tackles_won": 0.9799,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4842,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6186,
                "fouls_drawn": 0.1779,
                "blocks": 0.8777,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0124,
                "expected_assists": 0.0025,
                "shots_on_target": 0.2553,
                "big_chances_created": 0.0,
                "xgot": 0.0054,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289,
                "opponent_faced": "Jack Grealish",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0123,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8065,
                "creation_factor": 0.9597,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0123,
                "scorer_weight": 0.01,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0093,
                "finishing_factor": 0.8065,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.1147,
                "tackles": 1.4459,
                "tackles_won": 0.9799,
                "clearances": 5.4387,
                "aerial_won": 1.996,
                "total_shots": 0.4842,
                "rating": 6.7296,
                "minutes": 87.69,
                "total_pass": 24.7045,
                "accurate_pass": 19.5584,
                "duels_won": 3.4749,
                "total_long_balls": 2.0213,
                "accurate_long_balls": 0.7971,
                "total_own_half_passes": 15.9919,
                "accurate_own_half_passes": 15.0309,
                "total_opp_half_passes": 8.7125,
                "accurate_opp_half_passes": 4.5274,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.4023,
                "possession_lost": 5.8038,
                "dispossessed": 0.1639,
                "duels_lost": 2.0273,
                "aerial_lost": 0.9899,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.403,
                "challenges_lost": 0.2269,
                "fouls": 0.6186,
                "fouls_drawn": 0.1779,
                "blocks": 0.8777,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0124,
                "expected_assists": 0.0025,
                "shots_on_target": 0.2553,
                "big_chances_created": 0.0,
                "xgot": 0.0054,
                "ball_carries": 7.3124,
                "total_progression": 29.7338,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.2289,
                "opponent_faced": "Jack Grealish",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0123,
                "projected_assists": 0,
                "assist_probability": 0.0025,
                "finishing_factor": 0.8065,
                "creation_factor": 0.9597,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0025,
                "provider_weight": 0.0024,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0034,
                "creation_factor": 0.9597,
                "appearance_weight": 1.0,
                "weight_rank": 14,
                "eligible_players": 14
              }
            }
          ]
        },
        "Semi Ajayi": {
          "player_id": 307274,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 193,
          "market_value": 650000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7182,
            "minutes": 87,
            "total_pass": 29,
            "accurate_pass": 24,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 16,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 39,
            "possession_lost": 6.2909,
            "dispossessed": 0.4598,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.1553,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.1078,
            "expected_assists": 0.0045,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1405,
            "ball_carries": 11,
            "total_progression": 42,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.5,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.49,
            "opponent_faced": "Kiernan Dewsbury-Hall",
            "pressing_zone": "LW vs CB",
            "matchup_zone": "LW vs CB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.1022,
            "projected_assists": 0,
            "assist_probability": 0.0045,
            "finishing_factor": 1.25,
            "creation_factor": 0.9294,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0091,
                "expected_assists": 0.0069,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1266,
                "expected_assists": 0.0013,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 23,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0037,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 64,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.523,
                "expected_assists": 0.0016,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 13,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4764,
            "combined_rank_score": 2846.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 122.0,
            "sofascore_rating": 7.4,
            "sofascore_appearances": 2.0,
            "fifa_rank": 5571.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7182,
            "source_file": "data/player_rankings.csv",
            "player_name": "Semi Ajayi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mark Delgado",
                  "ranking": 4759
                },
                {
                  "player_name": "Daniel Cataño",
                  "ranking": 4760
                },
                {
                  "player_name": "Ryan Gauld",
                  "ranking": 4761
                },
                {
                  "player_name": "Marcus Ingvartsen",
                  "ranking": 4762
                },
                {
                  "player_name": "Junior Alonso",
                  "ranking": 4763
                }
              ],
              "lower": [
                {
                  "player_name": "Gerardo Arteaga",
                  "ranking": 4765
                },
                {
                  "player_name": "Hirving Lozano",
                  "ranking": 4766
                },
                {
                  "player_name": "Mauro Silveira",
                  "ranking": 4767
                },
                {
                  "player_name": "Manu García",
                  "ranking": 4768
                },
                {
                  "player_name": "Ewen Jaouen",
                  "ranking": 4769
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.579,
          "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.579,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9899,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 153.0,
              "goals_per90": 0.5882352941176471,
              "assists_per90": 0.0,
              "shots_per90": 0.59,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.11, gls/90: 0.5882352941176471, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.9102,
                "tackles": 1.4078,
                "tackles_won": 0.9017,
                "clearances": 3.3745,
                "aerial_won": 1.4293,
                "total_shots": 0.5187,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.4032,
                "accurate_pass": 24.601,
                "duels_won": 3.6757,
                "total_long_balls": 4.0802,
                "accurate_long_balls": 2.0442,
                "total_own_half_passes": 16.3678,
                "accurate_own_half_passes": 15.6629,
                "total_opp_half_passes": 13.0354,
                "accurate_opp_half_passes": 8.9381,
                "crosses_total": 0.3604,
                "crosses_accurate": 0.0,
                "touches": 39.8752,
                "possession_lost": 6.3551,
                "dispossessed": 0.4645,
                "duels_lost": 2.3778,
                "aerial_lost": 1.0248,
                "total_contest": 0.8052,
                "won_contest": 0.576,
                "ball_recovery": 3.2516,
                "challenges_lost": 0.4645,
                "fouls": 0.1948,
                "fouls_drawn": 0.1656,
                "blocks": 0.0,
                "goals": 0.1408,
                "goal_rate": 0.1408,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.1051,
                "expected_assists": 0.0038,
                "shots_on_target": 0.1408,
                "big_chances_created": 0.0,
                "xgot": 0.1369,
                "ball_carries": 10.6416,
                "total_progression": 42.0795,
                "progressive_carries": 0.5393,
                "key_pass": 0.0,
                "shots_off_target": 0.3779
              },
              "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": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.8098,
                  "aerialWon": 1.6396,
                  "totalClearance_p90": 3.0957,
                  "totalTackle": 1.2945,
                  "totalPass": 29.4032
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9102103114128113,
                    "model_output": 0.9102,
                    "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.1031
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0488
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0346
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0234
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.0313,
                      "total": 0.9102,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113524
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.049526
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.03489
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.024335
                        },
                        {
                          "name": "touches",
                          "margin": -0.010283
                        }
                      ],
                      "others_margin": -0.033622
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4078203439712524,
                    "model_output": 1.4078,
                    "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.1891
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1019
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0682
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0524
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0449
                        }
                      ],
                      "others": -0.0126,
                      "total": 1.4078,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127214
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.066549
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.04713
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.036395
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.031126
                        }
                      ],
                      "others_margin": -0.00885
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9016614556312561,
                    "model_output": 0.9017,
                    "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.115
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0437
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0345
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0266
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0151
                        }
                      ],
                      "others": 0.022,
                      "total": 0.9017,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126234
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.04608
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.037934
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.030263
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.017263
                        }
                      ],
                      "others_margin": 0.024677
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.3744900226593018,
                    "model_output": 3.3745,
                    "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.4848
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.445
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2814
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1161
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1085
                        }
                      ],
                      "others": -0.0599,
                      "total": 3.3745,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.131426
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.119974
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.084034
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.035532
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.032108
                        }
                      ],
                      "others_margin": -0.017598
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.42927885055542,
                    "model_output": 1.4293,
                    "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.2198
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1783
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0979
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0828
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0624
                        }
                      ],
                      "others": -0.1077,
                      "total": 1.4293,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.147588
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.105562
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.056561
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.050474
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.039824
                        }
                      ],
                      "others_margin": -0.072674
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5187075734138489,
                    "model_output": 0.5187,
                    "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.0628
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0311
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0116
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.011
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0101
                        }
                      ],
                      "others": -0.0588,
                      "total": 0.5187,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.062822
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.031111
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.011562
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.010982
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.010126
                        }
                      ],
                      "others_margin": -0.058775
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.718249797821045,
                    "model_output": 6.7182,
                    "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.0164
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0155
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0147
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0139
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0119
                        }
                      ],
                      "others": -0.0239,
                      "total": 6.7182,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.016425
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.01548
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.014742
                        },
                        {
                          "name": "touches",
                          "margin": -0.013909
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011871
                        }
                      ],
                      "others_margin": -0.023939
                    }
                  }
                ],
                "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.901,
                "tackles": 1.3936,
                "tackles_won": 0.8926,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5135,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3568,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1928,
                "fouls_drawn": 0.1639,
                "blocks": 0.0,
                "goals": 0.1394,
                "goal_rate": 0.1394,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.104,
                "expected_assists": 0.0038,
                "shots_on_target": 0.1394,
                "big_chances_created": 0.0,
                "xgot": 0.1355,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741
              },
              "params": {
                "market_value_eur": 650000,
                "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.0368)",
              "stats": {
                "interceptions": 0.9099,
                "tackles": 1.3936,
                "tackles_won": 0.8808,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5157,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3647,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1857,
                "fouls_drawn": 0.1789,
                "blocks": 0.0,
                "goals": 0.1553,
                "goal_rate": 0.1553,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.104,
                "expected_assists": 0.0038,
                "shots_on_target": 0.1554,
                "big_chances_created": 0.0,
                "xgot": 0.1355,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741
              },
              "params": {
                "blend_weight": 0.0368,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.971,
                "prior_reliability": 0.1133,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1394,
                  "after": 0.1554
                },
                {
                  "stat": "goals",
                  "before": 0.1394,
                  "after": 0.1553
                },
                {
                  "stat": "wasFouled",
                  "before": 0.1639,
                  "after": 0.1789
                },
                {
                  "stat": "wonTackle",
                  "before": 0.8926,
                  "after": 0.8808
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.901,
                  "after": 0.9099
                },
                {
                  "stat": "totalCross",
                  "before": 0.3568,
                  "after": 0.3647
                },
                {
                  "stat": "fouls",
                  "before": 0.1928,
                  "after": 0.1857
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9099,
                "tackles": 1.3936,
                "tackles_won": 0.8808,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5295,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3647,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1857,
                "fouls_drawn": 0.1789,
                "blocks": 0.0,
                "goals": 0.1553,
                "goal_rate": 0.1553,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.104,
                "expected_assists": 0.0038,
                "shots_on_target": 0.1554,
                "big_chances_created": 0.0,
                "xgot": 0.1355,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741
              },
              "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.9099,
                "tackles": 1.3936,
                "tackles_won": 0.8808,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5295,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3647,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1857,
                "fouls_drawn": 0.1789,
                "blocks": 0.0,
                "goals": 0.1553,
                "goal_rate": 0.1553,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.104,
                "expected_assists": 0.0038,
                "shots_on_target": 0.1554,
                "big_chances_created": 0.0,
                "xgot": 0.1355,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.49,
                "opponent_faced": "Kiernan Dewsbury-Hall",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Kiernan Dewsbury-Hall",
                  "matchup_zone": "LW vs CB"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.9099,
                "tackles": 1.3936,
                "tackles_won": 0.8808,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5295,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3647,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1857,
                "fouls_drawn": 0.1789,
                "blocks": 0.0,
                "goal_rate": 0.1553,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1078,
                "expected_assists": 0.0045,
                "shots_on_target": 0.1554,
                "big_chances_created": 0.0,
                "xgot": 0.1405,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.49,
                "opponent_faced": "Kiernan Dewsbury-Hall",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.9294
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 13 by projected rating, fifa_overall 70.0; not used by the projection)",
              "stats": {
                "interceptions": 0.9099,
                "tackles": 1.3936,
                "tackles_won": 0.8808,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5295,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3647,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1857,
                "fouls_drawn": 0.1789,
                "blocks": 0.0,
                "goal_rate": 0.1553,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1078,
                "expected_assists": 0.0045,
                "shots_on_target": 0.1554,
                "big_chances_created": 0.0,
                "xgot": 0.1405,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.49,
                "opponent_faced": "Kiernan Dewsbury-Hall",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.9294,
                "fifa_overall": 70.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": 4764,
                "fifa_rank": 5571.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.9099,
                "tackles": 1.3936,
                "tackles_won": 0.8808,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5295,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3647,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1857,
                "fouls_drawn": 0.1789,
                "blocks": 0.0,
                "goal_rate": 0.1553,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1078,
                "expected_assists": 0.0045,
                "shots_on_target": 0.1554,
                "big_chances_created": 0.0,
                "xgot": 0.1405,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.49,
                "opponent_faced": "Kiernan Dewsbury-Hall",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.1022,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.9294,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1022,
                "scorer_weight": 0.1348,
                "squad_weight_total": 1.0736,
                "weight_share": 0.1255,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.9099,
                "tackles": 1.3936,
                "tackles_won": 0.8808,
                "clearances": 3.3404,
                "aerial_won": 1.4148,
                "total_shots": 0.5295,
                "rating": 6.7182,
                "minutes": 87.39,
                "total_pass": 29.1062,
                "accurate_pass": 24.3525,
                "duels_won": 3.6386,
                "total_long_balls": 4.039,
                "accurate_long_balls": 2.0236,
                "total_own_half_passes": 16.2025,
                "accurate_own_half_passes": 15.5047,
                "total_opp_half_passes": 12.9037,
                "accurate_opp_half_passes": 8.8478,
                "crosses_total": 0.3647,
                "crosses_accurate": 0.0,
                "touches": 39.4725,
                "possession_lost": 6.2909,
                "dispossessed": 0.4598,
                "duels_lost": 2.3538,
                "aerial_lost": 1.0144,
                "total_contest": 0.7971,
                "won_contest": 0.5702,
                "ball_recovery": 3.2188,
                "challenges_lost": 0.4598,
                "fouls": 0.1857,
                "fouls_drawn": 0.1789,
                "blocks": 0.0,
                "goal_rate": 0.1553,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1078,
                "expected_assists": 0.0045,
                "shots_on_target": 0.1554,
                "big_chances_created": 0.0,
                "xgot": 0.1405,
                "ball_carries": 10.5341,
                "total_progression": 41.6545,
                "progressive_carries": 0.5339,
                "key_pass": 0.0,
                "shots_off_target": 0.3741,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.49,
                "opponent_faced": "Kiernan Dewsbury-Hall",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.1022,
                "projected_assists": 0,
                "assist_probability": 0.0045,
                "finishing_factor": 1.25,
                "creation_factor": 0.9294,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0045,
                "provider_weight": 0.0042,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0059,
                "creation_factor": 0.9294,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 14
              }
            }
          ]
        },
        "Lewie Coyle": {
          "player_id": 827587,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 173,
          "market_value": 1300000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.6043,
            "minutes": 78,
            "total_pass": 22,
            "accurate_pass": 16,
            "duels_won": 2,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 36,
            "possession_lost": 9.5827,
            "dispossessed": 0.4938,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0316,
            "expected_assists": 0.0178,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 31,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Kiernan Dewsbury-Hall, James Tarkowski",
            "matchup_zone": "RWB vs LW + LB",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0311,
            "projected_assists": 0,
            "assist_probability": 0.0176,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0356,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 31,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 82,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1344,
                "expected_assists": 0.0123,
                "total_shots": 1,
                "total_pass": 18,
                "accurate_pass": 14,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 64,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0073,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 45,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 7,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 70,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4885,
            "combined_rank_score": 2981.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 2.0,
            "fifa_rank": 5572.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6043,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lewie Coyle",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Cédric Zesiger",
                  "ranking": 4880
                },
                {
                  "player_name": "Timothé Cognat",
                  "ranking": 4881
                },
                {
                  "player_name": "Alvyn Sanches",
                  "ranking": 4882
                },
                {
                  "player_name": "Mattia Zanotti",
                  "ranking": 4883
                },
                {
                  "player_name": "Silas Andersen",
                  "ranking": 4884
                }
              ],
              "lower": [
                {
                  "player_name": "Gil Dias",
                  "ranking": 4886
                },
                {
                  "player_name": "Rafik Guitane",
                  "ranking": 4887
                },
                {
                  "player_name": "Marcelo Flores",
                  "ranking": 4888
                },
                {
                  "player_name": "Sikou Niakaté",
                  "ranking": 4889
                },
                {
                  "player_name": "Mateu Morey",
                  "ranking": 4890
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.576,
          "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.576,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9899,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 114.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Hull City, rel: 0.09, 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.6693,
                "tackles": 1.3235,
                "tackles_won": 0.7661,
                "clearances": 2.0278,
                "aerial_won": 0.5926,
                "total_shots": 0.3466,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 22.056,
                "accurate_pass": 16.4833,
                "duels_won": 1.5586,
                "total_long_balls": 3.8164,
                "accurate_long_balls": 1.8052,
                "total_own_half_passes": 8.4751,
                "accurate_own_half_passes": 7.7814,
                "total_opp_half_passes": 13.5809,
                "accurate_opp_half_passes": 8.7019,
                "crosses_total": 1.6749,
                "crosses_accurate": 0.1948,
                "touches": 36.5411,
                "possession_lost": 9.6805,
                "dispossessed": 0.4988,
                "duels_lost": 2.3931,
                "aerial_lost": 1.1639,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.3136,
                "challenges_lost": 0.424,
                "fouls": 0.3063,
                "fouls_drawn": 0.6127,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0308,
                "expected_assists": 0.0151,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.982,
                "total_progression": 30.9292,
                "progressive_carries": 0.5393,
                "key_pass": 0.3699,
                "shots_off_target": 0.3466
              },
              "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": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.0959,
                  "aerialWon": 0.3063,
                  "totalClearance_p90": 1.6776,
                  "totalTackle": 0.6396,
                  "totalPass": 22.056
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.6692714691162109,
                    "model_output": 0.6693,
                    "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.1186
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0932
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.037
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0334
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0244
                        }
                      ],
                      "others": -0.0678,
                      "total": 0.6693,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.148834
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118858
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.045507
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.042945
                        },
                        {
                          "name": "touches",
                          "margin": -0.032552
                        }
                      ],
                      "others_margin": -0.096586
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.3234690427780151,
                    "model_output": 1.3235,
                    "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.1966
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1916
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0984
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0654
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0522
                        }
                      ],
                      "others": 0.0362,
                      "total": 1.3235,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.131952
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.128372
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.072964
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.051639
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.041393
                        }
                      ],
                      "others_margin": 0.027797
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7661384344100952,
                    "model_output": 0.7661,
                    "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.1074
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0907
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0757
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0464
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0219
                        }
                      ],
                      "others": 0.0286,
                      "total": 0.7661,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.134385
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114645
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.094746
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.062837
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.030194
                        }
                      ],
                      "others_margin": 0.03815
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.0278186798095703,
                    "model_output": 2.0278,
                    "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.6869
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.3335
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3178
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2839
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1757
                        }
                      ],
                      "others": -0.2614,
                      "total": 2.0278,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.221932
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.128549
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122871
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.109008
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.073931
                        }
                      ],
                      "others_margin": -0.121273
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5925825834274292,
                    "model_output": 0.5926,
                    "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.5022
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1247
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0937
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0828
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0387
                        }
                      ],
                      "others": -0.1129,
                      "total": 0.5926,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.451555
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.152777
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.13252
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117989
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.053382
                        }
                      ],
                      "others_margin": -0.174573
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.34655869007110596,
                    "model_output": 0.3466,
                    "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.0921
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0462
                        },
                        {
                          "name": "rating",
                          "contribution": -0.046
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0121
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0119
                        }
                      ],
                      "others": -0.0566,
                      "total": 0.3466,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.092063
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.046236
                        },
                        {
                          "name": "rating",
                          "margin": -0.046044
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.012114
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.011949
                        }
                      ],
                      "others_margin": -0.056764
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.604307651519775,
                    "model_output": 6.6043,
                    "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.0381
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0238
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0203
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0192
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0136
                        }
                      ],
                      "others": -0.0658,
                      "total": 6.6043,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.038092
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.023844
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.020327
                        },
                        {
                          "name": "rating",
                          "margin": -0.019213
                        },
                        {
                          "name": "touches",
                          "margin": -0.013599
                        }
                      ],
                      "others_margin": -0.065749
                    }
                  }
                ],
                "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.6625,
                "tackles": 1.3101,
                "tackles_won": 0.7584,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3431,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.658,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3032,
                "fouls_drawn": 0.6065,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0305,
                "expected_assists": 0.0149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431
              },
              "params": {
                "market_value_eur": 1300000,
                "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.0282)",
              "stats": {
                "interceptions": 0.6626,
                "tackles": 1.3101,
                "tackles_won": 0.7558,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3334,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3321,
                "fouls_drawn": 0.6643,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0305,
                "expected_assists": 0.0149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431
              },
              "params": {
                "blend_weight": 0.0282,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8638,
                "prior_reliability": 0.0867,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.6065,
                  "after": 0.6643
                },
                {
                  "stat": "fouls",
                  "before": 0.3032,
                  "after": 0.3321
                },
                {
                  "stat": "totalShots",
                  "before": 0.3431,
                  "after": 0.3334
                },
                {
                  "stat": "totalCross",
                  "before": 1.658,
                  "after": 1.6487
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.6626,
                "tackles": 1.3101,
                "tackles_won": 0.7558,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3431,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3321,
                "fouls_drawn": 0.6643,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0305,
                "expected_assists": 0.0149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431
              },
              "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.6626,
                "tackles": 1.3101,
                "tackles_won": 0.7558,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3431,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3321,
                "fouls_drawn": 0.6643,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0305,
                "expected_assists": 0.0149,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431,
                "opponent_faced": "Kiernan Dewsbury-Hall, James Tarkowski",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Kiernan Dewsbury-Hall, James Tarkowski",
                  "matchup_zone": "RWB vs LW + LB"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.6626,
                "tackles": 1.3101,
                "tackles_won": 0.7558,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3431,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3321,
                "fouls_drawn": 0.6643,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0316,
                "expected_assists": 0.0178,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431,
                "opponent_faced": "Kiernan Dewsbury-Hall, James Tarkowski",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_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.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "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 70.0; not used by the projection)",
              "stats": {
                "interceptions": 0.6626,
                "tackles": 1.3101,
                "tackles_won": 0.7558,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3431,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3321,
                "fouls_drawn": 0.6643,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0316,
                "expected_assists": 0.0178,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431,
                "opponent_faced": "Kiernan Dewsbury-Hall, James Tarkowski",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_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": 70.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4885,
                "fifa_rank": 5572.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.6626,
                "tackles": 1.3101,
                "tackles_won": 0.7558,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3431,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3321,
                "fouls_drawn": 0.6643,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0316,
                "expected_assists": 0.0178,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431,
                "opponent_faced": "Kiernan Dewsbury-Hall, James Tarkowski",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0311,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0311,
                "scorer_weight": 0.0253,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0235,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.6626,
                "tackles": 1.3101,
                "tackles_won": 0.7558,
                "clearances": 2.0073,
                "aerial_won": 0.5866,
                "total_shots": 0.3431,
                "rating": 6.6043,
                "minutes": 77.74,
                "total_pass": 21.8332,
                "accurate_pass": 16.3168,
                "duels_won": 1.5429,
                "total_long_balls": 3.7779,
                "accurate_long_balls": 1.787,
                "total_own_half_passes": 8.3895,
                "accurate_own_half_passes": 7.7028,
                "total_opp_half_passes": 13.4437,
                "accurate_opp_half_passes": 8.614,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.1928,
                "touches": 36.172,
                "possession_lost": 9.5827,
                "dispossessed": 0.4938,
                "duels_lost": 2.3689,
                "aerial_lost": 1.1521,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 2.2902,
                "challenges_lost": 0.4197,
                "fouls": 0.3321,
                "fouls_drawn": 0.6643,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0316,
                "expected_assists": 0.0178,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.9216,
                "total_progression": 30.6168,
                "progressive_carries": 0.5339,
                "key_pass": 0.3662,
                "shots_off_target": 0.3431,
                "opponent_faced": "Kiernan Dewsbury-Hall, James Tarkowski",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0311,
                "projected_assists": 0,
                "assist_probability": 0.0176,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0176,
                "provider_weight": 0.0142,
                "squad_weight_total": 0.7134,
                "weight_share": 0.02,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 14
              }
            }
          ]
        },
        "Konstantinos Tzolakis": {
          "player_id": 953414,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 19,
          "height": 193,
          "market_value": 17200000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0383,
            "rating": 7.0085,
            "minutes": 90,
            "total_pass": 36,
            "accurate_pass": 15,
            "total_long_balls": 29,
            "accurate_long_balls": 10,
            "touches": 51,
            "clearances": 0,
            "ball_recovery": 13,
            "high_claims": 2,
            "punches": 0.9323,
            "aerial_won": 1,
            "sweeper_actions": 2,
            "sweeper_accurate": 2,
            "saves_inside_box": 3,
            "possession_lost": 21.0979,
            "duels_won": 2,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "total_own_half_passes": 10,
            "accurate_own_half_passes": 8,
            "gk_engine_opponent_lambda": 1.6093,
            "shots_faced": 16.1,
            "expected_saves": 3.94,
            "high_pressure_saves": 1.35,
            "opponent_faced": "Thierno Barry, Kiernan Dewsbury-Hall",
            "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": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 17,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 11,
                "saves": 3,
                "goals_prevented": -0.2533
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 12,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 15,
                "saves": 5,
                "goals_prevented": -0.2624
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 18,
                "duels_won": 1,
                "ball_recovery": 10,
                "saves": 1,
                "goals_prevented": 0.0756
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 3,
                "goals_prevented": 1.3259
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 17,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 22,
                "saves": 5,
                "goals_prevented": 0.5968
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 1105,
            "combined_rank_score": 495.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 19.0,
            "sofascore_rating": 8.15,
            "sofascore_appearances": 2.0,
            "fifa_rank": 972.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0085,
            "source_file": "data/player_rankings.csv",
            "player_name": "Konstantinos Tzolakis",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mukhammadkodir Khamraliev",
                  "ranking": 1100
                },
                {
                  "player_name": "Pascal Groß",
                  "ranking": 1101
                },
                {
                  "player_name": "Alberto Moleiro",
                  "ranking": 1102
                },
                {
                  "player_name": "Angelo Stiller",
                  "ranking": 1103
                },
                {
                  "player_name": "Mauro Júnior",
                  "ranking": 1104
                }
              ],
              "lower": [
                {
                  "player_name": "Pau Torres",
                  "ranking": 1106
                },
                {
                  "player_name": "Ju-yeong Jo",
                  "ranking": 1107
                },
                {
                  "player_name": "Lee Dong-hyeop",
                  "ranking": 1108
                },
                {
                  "player_name": "Alphonso Davies",
                  "ranking": 1109
                },
                {
                  "player_name": "Pierre-Emerick Aubameyang",
                  "ranking": 1110
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "G_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "accurateLongBalls",
              "totalOwnHalfPasses",
              "accurateOwnHalfPasses",
              "saves",
              "savedShotsFromInsideTheBox",
              "goodHighClaim",
              "punches",
              "aerialWon",
              "totalKeeperSweeper",
              "accurateKeeperSweeper",
              "totalClearance",
              "ballRecovery",
              "touches",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "goalsPrevented",
              "rating",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0146,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (G_service) evaluated 5 historical appearances across 3 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.9793,
                "goals_prevented": -0.0378,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.0811,
                "accurate_pass": 15.0553,
                "total_long_balls": 29.0447,
                "accurate_long_balls": 9.618,
                "touches": 50.3556,
                "clearances": 0.4584,
                "ball_recovery": 13.2703,
                "high_claims": 1.8575,
                "punches": 0.9189,
                "aerial_won": 0.9459,
                "sweeper_actions": 1.5599,
                "sweeper_accurate": 1.5599,
                "saves_inside_box": 2.6104,
                "possession_lost": 20.7943,
                "duels_won": 1.7803,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8711,
                "total_own_half_passes": 10.2029,
                "accurate_own_half_passes": 7.6809
              },
              "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": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 8.1
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 1.256,
                  "distribution_accuracy": 0.7435,
                  "sweeper_accuracy": 0.576,
                  "goalkeeperValueNormalized": 0.3315,
                  "save_contribution": 3.5401,
                  "accurateKeeperSweeper": 1.5599
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.9792699813842773,
                    "model_output": 2.9793,
                    "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": "inside_box_save_rate",
                          "contribution": -0.0327
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0234
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0229
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0213
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0171
                        }
                      ],
                      "others": 0.0797,
                      "total": 2.9793,
                      "log_link": true,
                      "margin_base": 1.074537,
                      "item_margins": [
                        {
                          "name": "inside_box_save_rate",
                          "margin": -0.011218
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.008102
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.00795
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.007334
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.005883
                        }
                      ],
                      "others_margin": 0.02706
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.03778575360774994,
                    "model_output": -0.0378,
                    "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.0254
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": 0.0244
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0158
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0155
                        },
                        {
                          "name": "commanding_index",
                          "contribution": -0.015
                        }
                      ],
                      "others": -0.0049,
                      "total": -0.0378,
                      "log_link": false,
                      "margin_base": -0.016613,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.025354
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": 0.02441
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.015782
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.015502
                        },
                        {
                          "name": "commanding_index",
                          "margin": -0.014983
                        }
                      ],
                      "others_margin": -0.004965
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.008495330810547,
                    "model_output": 7.0085,
                    "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": "distribution_accuracy",
                          "contribution": 0.0394
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0311
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.028
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0167
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0162
                        }
                      ],
                      "others": -0.004,
                      "total": 7.0085,
                      "log_link": false,
                      "margin_base": 7.009122,
                      "item_margins": [
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.039393
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.031081
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.028019
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.016708
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.016192
                        }
                      ],
                      "others_margin": -0.004058
                    }
                  }
                ],
                "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.0146, quality 0.603)",
              "stats": {
                "saves": 3.0228,
                "goals_prevented": -0.0383,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.5933,
                "accurate_pass": 15.2751,
                "total_long_balls": 29.4688,
                "accurate_long_balls": 9.7584,
                "touches": 51.0908,
                "clearances": 0.4651,
                "ball_recovery": 13.464,
                "high_claims": 1.8846,
                "punches": 0.9323,
                "aerial_won": 0.9597,
                "sweeper_actions": 1.5827,
                "sweeper_accurate": 1.5827,
                "saves_inside_box": 2.6485,
                "possession_lost": 21.0979,
                "duels_won": 1.8063,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8838,
                "total_own_half_passes": 10.3519,
                "accurate_own_half_passes": 7.793
              },
              "params": {
                "market_value_eur": 17200000,
                "quality_factor": 0.6027,
                "boost_factor": 1.0146,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 3.0228,
                "goals_prevented": -0.0383,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.5933,
                "accurate_pass": 15.2751,
                "total_long_balls": 29.4688,
                "accurate_long_balls": 9.7584,
                "touches": 51.0908,
                "clearances": 0.4651,
                "ball_recovery": 13.464,
                "high_claims": 1.8846,
                "punches": 0.9323,
                "aerial_won": 0.9597,
                "sweeper_actions": 1.5827,
                "sweeper_accurate": 1.5827,
                "saves_inside_box": 2.6485,
                "possession_lost": 21.0979,
                "duels_won": 1.8063,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8838,
                "total_own_half_passes": 10.3519,
                "accurate_own_half_passes": 7.793
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "saves": 3.0228,
                "goals_prevented": -0.0383,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.5933,
                "accurate_pass": 15.2751,
                "total_long_balls": 29.4688,
                "accurate_long_balls": 9.7584,
                "touches": 51.0908,
                "clearances": 0.4651,
                "ball_recovery": 13.464,
                "high_claims": 1.8846,
                "punches": 0.9323,
                "aerial_won": 0.9597,
                "sweeper_actions": 1.5827,
                "sweeper_accurate": 1.5827,
                "saves_inside_box": 2.6485,
                "possession_lost": 21.0979,
                "duels_won": 1.8063,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8838,
                "total_own_half_passes": 10.3519,
                "accurate_own_half_passes": 7.793,
                "gk_engine_opponent_lambda": 1.6093,
                "shots_faced": 15.3,
                "expected_saves": 3.75,
                "high_pressure_saves": 1.29,
                "opponent_faced": "Thierno Barry, Kiernan Dewsbury-Hall",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Thierno Barry, Kiernan Dewsbury-Hall",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.6093
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "saves": 3.0228,
                "goals_prevented": -0.0383,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.5933,
                "accurate_pass": 15.2751,
                "total_long_balls": 29.4688,
                "accurate_long_balls": 9.7584,
                "touches": 51.0908,
                "clearances": 0.4651,
                "ball_recovery": 13.464,
                "high_claims": 1.8846,
                "punches": 0.9323,
                "aerial_won": 0.9597,
                "sweeper_actions": 1.5827,
                "sweeper_accurate": 1.5827,
                "saves_inside_box": 2.6485,
                "possession_lost": 21.0979,
                "duels_won": 1.8063,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8838,
                "total_own_half_passes": 10.3519,
                "accurate_own_half_passes": 7.793,
                "gk_engine_opponent_lambda": 1.6093,
                "shots_faced": 16.1,
                "expected_saves": 3.94,
                "high_pressure_saves": 1.35,
                "opponent_faced": "Thierno Barry, Kiernan Dewsbury-Hall",
                "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.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 15.3,
                  "after": 16.1
                },
                {
                  "stat": "expected_saves",
                  "before": 3.75,
                  "after": 3.94
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.29,
                  "after": 1.35
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 2 by projected rating, fifa_overall 79.0; not used by the projection)",
              "stats": {
                "saves": 3.0228,
                "goals_prevented": -0.0383,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.5933,
                "accurate_pass": 15.2751,
                "total_long_balls": 29.4688,
                "accurate_long_balls": 9.7584,
                "touches": 51.0908,
                "clearances": 0.4651,
                "ball_recovery": 13.464,
                "high_claims": 1.8846,
                "punches": 0.9323,
                "aerial_won": 0.9597,
                "sweeper_actions": 1.5827,
                "sweeper_accurate": 1.5827,
                "saves_inside_box": 2.6485,
                "possession_lost": 21.0979,
                "duels_won": 1.8063,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8838,
                "total_own_half_passes": 10.3519,
                "accurate_own_half_passes": 7.793,
                "gk_engine_opponent_lambda": 1.6093,
                "shots_faced": 16.1,
                "expected_saves": 3.94,
                "high_pressure_saves": 1.35,
                "opponent_faced": "Thierno Barry, Kiernan Dewsbury-Hall",
                "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": 79.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": 1105,
                "fifa_rank": 972.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "saves": 3.0228,
                "goals_prevented": -0.0383,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.5933,
                "accurate_pass": 15.2751,
                "total_long_balls": 29.4688,
                "accurate_long_balls": 9.7584,
                "touches": 51.0908,
                "clearances": 0.4651,
                "ball_recovery": 13.464,
                "high_claims": 1.8846,
                "punches": 0.9323,
                "aerial_won": 0.9597,
                "sweeper_actions": 1.5827,
                "sweeper_accurate": 1.5827,
                "saves_inside_box": 2.6485,
                "possession_lost": 21.0979,
                "duels_won": 1.8063,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8838,
                "total_own_half_passes": 10.3519,
                "accurate_own_half_passes": 7.793,
                "gk_engine_opponent_lambda": 1.6093,
                "shots_faced": 16.1,
                "expected_saves": 3.94,
                "high_pressure_saves": 1.35,
                "opponent_faced": "Thierno Barry, Kiernan Dewsbury-Hall",
                "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": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "saves": 3.0228,
                "goals_prevented": -0.0383,
                "rating": 7.0085,
                "minutes": 90.0,
                "total_pass": 35.5933,
                "accurate_pass": 15.2751,
                "total_long_balls": 29.4688,
                "accurate_long_balls": 9.7584,
                "touches": 51.0908,
                "clearances": 0.4651,
                "ball_recovery": 13.464,
                "high_claims": 1.8846,
                "punches": 0.9323,
                "aerial_won": 0.9597,
                "sweeper_actions": 1.5827,
                "sweeper_accurate": 1.5827,
                "saves_inside_box": 2.6485,
                "possession_lost": 21.0979,
                "duels_won": 1.8063,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.8838,
                "total_own_half_passes": 10.3519,
                "accurate_own_half_passes": 7.793,
                "gk_engine_opponent_lambda": 1.6093,
                "shots_faced": 16.1,
                "expected_saves": 3.94,
                "high_pressure_saves": 1.35,
                "opponent_faced": "Thierno Barry, Kiernan Dewsbury-Hall",
                "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": 79.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0
              }
            }
          ]
        },
        "Mohamed Belloumi": {
          "player_id": 1125839,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 177,
          "market_value": 5700000,
          "stats": {
            "expected_goals": 0.1624,
            "goal_rate": 0.1781,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.1247,
            "key_pass": 1,
            "rating": 6.9481,
            "minutes": 79,
            "total_pass": 16,
            "accurate_pass": 12,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 8,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 38,
            "possession_lost": 12.0967,
            "dispossessed": 0.1648,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.433,
            "assists": 0,
            "interceptions": 2,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2305,
            "offsides": 0,
            "ball_carries": 8,
            "total_progression": 52,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.7242,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
            "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1499,
            "projected_assists": 0,
            "assist_probability": 0.1172,
            "finishing_factor": 1.1041,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 83,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3457,
                "expected_assists": 0.3109,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 30,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 6,
                "tackles_won": 3,
                "aerial_won": 1,
                "duels_won": 10,
                "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": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 60,
                "rating": 8.5,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1708,
                "expected_assists": 0.0628,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 6,
                "accurate_pass": 4,
                "key_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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 82,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0295,
                "expected_assists": 0.012,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 6,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 83,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1161,
                "expected_assists": 0.0167,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 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": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.048,
                "expected_assists": 0.0331,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 16,
                "accurate_pass": 11,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3983,
            "combined_rank_score": 1960.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3279.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9481,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Belloumi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Freddie Potts",
                  "ranking": 3978
                },
                {
                  "player_name": "Chupe",
                  "ranking": 3979
                },
                {
                  "player_name": "Bigas",
                  "ranking": 3980
                },
                {
                  "player_name": "Pablo Ibáñez",
                  "ranking": 3981
                },
                {
                  "player_name": "Jonny",
                  "ranking": 3982
                }
              ],
              "lower": [
                {
                  "player_name": "Jack Hendry",
                  "ranking": 3984
                },
                {
                  "player_name": "Areso",
                  "ranking": 3985
                },
                {
                  "player_name": "Gorosabel",
                  "ranking": 3986
                },
                {
                  "player_name": "Mateo Carabajal",
                  "ranking": 3987
                },
                {
                  "player_name": "Riquelme",
                  "ranking": 3988
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "history_matches": 5,
          "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": 5,
            "data_confidence": 0.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9949,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 5 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2174,
                "goals": 0.2472,
                "goal_rate": 0.2472,
                "shots_on_target": 0.832,
                "total_shots": 2.2475,
                "expected_assists": 0.1051,
                "key_pass": 1.0901,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.4018,
                "accurate_pass": 11.9105,
                "duels_won": 5.2702,
                "total_long_balls": 2.376,
                "accurate_long_balls": 1.1312,
                "total_opp_half_passes": 10.8741,
                "accurate_opp_half_passes": 7.7796,
                "crosses_total": 2.4098,
                "crosses_accurate": 0.0,
                "touches": 38.297,
                "possession_lost": 12.1587,
                "dispossessed": 0.1656,
                "duels_lost": 5.2098,
                "aerial_lost": 0.6052,
                "total_contest": 2.6494,
                "won_contest": 1.3393,
                "ball_recovery": 2.7933,
                "challenges_lost": 1.6437,
                "fouls": 1.4852,
                "fouls_drawn": 0.1408,
                "assists": 0.4352,
                "assist_rate": 0.4352,
                "interceptions": 1.6408,
                "tackles_won": 1.6705,
                "tackles": 3.3257,
                "clearances": 0.5012,
                "blocks": 0.3356,
                "big_chances_created": 0.1656,
                "big_chances_missed": 0.2696,
                "xgot": 0.3086,
                "offsides": 0.1948,
                "ball_carries": 8.5242,
                "total_progression": 52.1866,
                "progressive_carries": 1.9341,
                "shots_off_target": 1.4155
              },
              "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": "Newcastle United",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.1641,
                  "totalOppositionHalfPasses": 10.8741,
                  "accurateOppositionHalfPasses": 7.7796,
                  "accuratePass": 11.9105,
                  "totalShots": 2.8725
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.21739879250526428,
                    "model_output": 0.2174,
                    "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.0687
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0332
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0196
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0179
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0027,
                      "total": 0.2174,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.296449
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.132637
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.087164
                        },
                        {
                          "name": "goals",
                          "margin": 0.079912
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.056215
                        }
                      ],
                      "others_margin": -0.011688
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.24716603755950928,
                    "model_output": 0.2472,
                    "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.077
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0306
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0282
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0192
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0153
                        }
                      ],
                      "others": -0.032,
                      "total": 0.2472,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.320515
                        },
                        {
                          "name": "goals",
                          "margin": 0.10336
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.095019
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.070401
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.056505
                        }
                      ],
                      "others_margin": -0.121791
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8319562077522278,
                    "model_output": 0.832,
                    "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.1729
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0632
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0617
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0629
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0554
                        }
                      ],
                      "others": 0.0053,
                      "total": 0.832,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.279184
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.093163
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.091167
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.0851
                        },
                        {
                          "name": "goals",
                          "margin": 0.069293
                        }
                      ],
                      "others_margin": 0.006239
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.2474441528320312,
                    "model_output": 2.2474,
                    "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.4951
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2178
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.1038
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0973
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0577
                        }
                      ],
                      "others": 0.0124,
                      "total": 2.2474,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.495059
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.21781
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.103807
                        },
                        {
                          "name": "goals",
                          "margin": 0.097333
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.057722
                        }
                      ],
                      "others_margin": 0.012451
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.10512632131576538,
                    "model_output": 0.1051,
                    "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.0168
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0103
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0061
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0054
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.005
                        }
                      ],
                      "others": 0.0072,
                      "total": 0.1051,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.231647
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.119861
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.064283
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.053695
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.049546
                        }
                      ],
                      "others_margin": 0.071923
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.09012770652771,
                    "model_output": 1.0901,
                    "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.2338
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0532
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0491
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0426
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0312
                        }
                      ],
                      "others": 0.1126,
                      "total": 1.0901,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.297768
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.060397
                        },
                        {
                          "name": "rating",
                          "margin": 0.055867
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.046071
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.032424
                        }
                      ],
                      "others_margin": 0.109121
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.948098182678223,
                    "model_output": 6.9481,
                    "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": "rating",
                          "contribution": 0.0654
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0651
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": 0.0384
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0275
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.024
                        }
                      ],
                      "others": -0.0345,
                      "total": 6.9481,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.065371
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.065061
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": 0.038447
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.027461
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.023952
                        }
                      ],
                      "others_margin": -0.034354
                    }
                  }
                ],
                "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.9949, quality 0.471)",
              "stats": {
                "expected_goals": 0.2163,
                "goals": 0.2459,
                "goal_rate": 0.2459,
                "shots_on_target": 0.8277,
                "total_shots": 2.236,
                "expected_assists": 0.1046,
                "key_pass": 1.0846,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.3182,
                "accurate_pass": 11.8498,
                "duels_won": 5.2433,
                "total_long_balls": 2.3639,
                "accurate_long_balls": 1.1254,
                "total_opp_half_passes": 10.8186,
                "accurate_opp_half_passes": 7.7399,
                "crosses_total": 2.3975,
                "crosses_accurate": 0.0,
                "touches": 38.1017,
                "possession_lost": 12.0967,
                "dispossessed": 0.1648,
                "duels_lost": 5.1832,
                "aerial_lost": 0.6021,
                "total_contest": 2.6359,
                "won_contest": 1.3325,
                "ball_recovery": 2.7791,
                "challenges_lost": 1.6353,
                "fouls": 1.4776,
                "fouls_drawn": 0.1401,
                "assists": 0.433,
                "assist_rate": 0.433,
                "interceptions": 1.6324,
                "tackles_won": 1.662,
                "tackles": 3.3087,
                "clearances": 0.4986,
                "blocks": 0.3339,
                "big_chances_created": 0.1648,
                "big_chances_missed": 0.2682,
                "xgot": 0.307,
                "offsides": 0.1938,
                "ball_carries": 8.4807,
                "total_progression": 51.9204,
                "progressive_carries": 1.9242,
                "shots_off_target": 1.4083
              },
              "params": {
                "market_value_eur": 5700000,
                "quality_factor": 0.4708,
                "boost_factor": 0.9949,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2163,
                "goals": 0.2459,
                "goal_rate": 0.2459,
                "shots_on_target": 0.8277,
                "total_shots": 2.236,
                "expected_assists": 0.1046,
                "key_pass": 1.0846,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.3182,
                "accurate_pass": 11.8498,
                "duels_won": 5.2433,
                "total_long_balls": 2.3639,
                "accurate_long_balls": 1.1254,
                "total_opp_half_passes": 10.8186,
                "accurate_opp_half_passes": 7.7399,
                "crosses_total": 2.3975,
                "crosses_accurate": 0.0,
                "touches": 38.1017,
                "possession_lost": 12.0967,
                "dispossessed": 0.1648,
                "duels_lost": 5.1832,
                "aerial_lost": 0.6021,
                "total_contest": 2.6359,
                "won_contest": 1.3325,
                "ball_recovery": 2.7791,
                "challenges_lost": 1.6353,
                "fouls": 1.4776,
                "fouls_drawn": 0.1401,
                "assists": 0.433,
                "assist_rate": 0.433,
                "interceptions": 1.6324,
                "tackles_won": 1.662,
                "tackles": 3.3087,
                "clearances": 0.4986,
                "blocks": 0.3339,
                "big_chances_created": 0.1648,
                "big_chances_missed": 0.2682,
                "xgot": 0.307,
                "offsides": 0.1938,
                "ball_carries": 8.4807,
                "total_progression": 51.9204,
                "progressive_carries": 1.9242,
                "shots_off_target": 1.4083
              },
              "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.1566,
                "goals": 0.1781,
                "goal_rate": 0.1781,
                "shots_on_target": 0.5994,
                "total_shots": 1.6193,
                "expected_assists": 0.1046,
                "key_pass": 1.0846,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.3182,
                "accurate_pass": 11.8498,
                "duels_won": 5.2433,
                "total_long_balls": 2.3639,
                "accurate_long_balls": 1.1254,
                "total_opp_half_passes": 10.8186,
                "accurate_opp_half_passes": 7.7399,
                "crosses_total": 2.3975,
                "crosses_accurate": 0.0,
                "touches": 38.1017,
                "possession_lost": 12.0967,
                "dispossessed": 0.1648,
                "duels_lost": 5.1832,
                "aerial_lost": 0.6021,
                "total_contest": 2.6359,
                "won_contest": 1.3325,
                "ball_recovery": 2.7791,
                "challenges_lost": 1.6353,
                "fouls": 1.4776,
                "fouls_drawn": 0.1401,
                "assists": 0.433,
                "assist_rate": 0.433,
                "interceptions": 1.6324,
                "tackles_won": 1.662,
                "tackles": 3.3087,
                "clearances": 0.4986,
                "blocks": 0.3339,
                "big_chances_created": 0.1648,
                "big_chances_missed": 0.1942,
                "xgot": 0.2223,
                "offsides": 0.1938,
                "ball_carries": 8.4807,
                "total_progression": 51.9204,
                "progressive_carries": 1.9242,
                "shots_off_target": 1.0199,
                "duel_xg_multiplier": 0.7242,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.7242,
                  "skill_edge": -0.1456,
                  "height_edge": -0.042,
                  "attacker_skill": 0.4708,
                  "defender_skill": 0.7944,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Jarrad Branthwaite",
                      "market_value": 41000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.839
                    },
                    {
                      "player": "Vitaliy Mykolenko",
                      "market_value": 26000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7498
                    }
                  ],
                  "xg_override": 0.1566
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.236,
                  "after": 1.6193
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.4083,
                  "after": 1.0199
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8277,
                  "after": 0.5994
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.307,
                  "after": 0.2223
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2682,
                  "after": 0.1942
                },
                {
                  "stat": "goals",
                  "before": 0.2459,
                  "after": 0.1781
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2163,
                  "after": 0.1566
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1624,
                "goal_rate": 0.1781,
                "goals": 0,
                "shots_on_target": 0.5994,
                "total_shots": 1.6193,
                "expected_assists": 0.1247,
                "key_pass": 1.0846,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.3182,
                "accurate_pass": 11.8498,
                "duels_won": 5.2433,
                "total_long_balls": 2.3639,
                "accurate_long_balls": 1.1254,
                "total_opp_half_passes": 10.8186,
                "accurate_opp_half_passes": 7.7399,
                "crosses_total": 2.3975,
                "crosses_accurate": 0.0,
                "touches": 38.1017,
                "possession_lost": 12.0967,
                "dispossessed": 0.1648,
                "duels_lost": 5.1832,
                "aerial_lost": 0.6021,
                "total_contest": 2.6359,
                "won_contest": 1.3325,
                "ball_recovery": 2.7791,
                "challenges_lost": 1.6353,
                "fouls": 1.4776,
                "fouls_drawn": 0.1401,
                "assist_rate": 0.433,
                "assists": 0,
                "interceptions": 1.6324,
                "tackles_won": 1.662,
                "tackles": 3.3087,
                "clearances": 0.4986,
                "blocks": 0.3339,
                "big_chances_created": 0.1648,
                "big_chances_missed": 0.1942,
                "xgot": 0.2305,
                "offsides": 0.1938,
                "ball_carries": 8.4807,
                "total_progression": 51.9204,
                "progressive_carries": 1.9242,
                "shots_off_target": 1.0199,
                "duel_xg_multiplier": 0.7242,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1041,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1566,
                  "after": 0.1624
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1046,
                  "after": 0.1247
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 3 by projected rating, fifa_overall 73.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.1624,
                "goal_rate": 0.1781,
                "goals": 0,
                "shots_on_target": 0.5994,
                "total_shots": 1.6193,
                "expected_assists": 0.1247,
                "key_pass": 1.0846,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.3182,
                "accurate_pass": 11.8498,
                "duels_won": 5.2433,
                "total_long_balls": 2.3639,
                "accurate_long_balls": 1.1254,
                "total_opp_half_passes": 10.8186,
                "accurate_opp_half_passes": 7.7399,
                "crosses_total": 2.3975,
                "crosses_accurate": 0.0,
                "touches": 38.1017,
                "possession_lost": 12.0967,
                "dispossessed": 0.1648,
                "duels_lost": 5.1832,
                "aerial_lost": 0.6021,
                "total_contest": 2.6359,
                "won_contest": 1.3325,
                "ball_recovery": 2.7791,
                "challenges_lost": 1.6353,
                "fouls": 1.4776,
                "fouls_drawn": 0.1401,
                "assist_rate": 0.433,
                "assists": 0,
                "interceptions": 1.6324,
                "tackles_won": 1.662,
                "tackles": 3.3087,
                "clearances": 0.4986,
                "blocks": 0.3339,
                "big_chances_created": 0.1648,
                "big_chances_missed": 0.1942,
                "xgot": 0.2305,
                "offsides": 0.1938,
                "ball_carries": 8.4807,
                "total_progression": 51.9204,
                "progressive_carries": 1.9242,
                "shots_off_target": 1.0199,
                "duel_xg_multiplier": 0.7242,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1041,
                "creation_factor": 1.25,
                "fifa_overall": 73.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": 3983,
                "fifa_rank": 3279.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1624,
                "goal_rate": 0.1781,
                "goals": 0,
                "shots_on_target": 0.5994,
                "total_shots": 1.6193,
                "expected_assists": 0.1247,
                "key_pass": 1.0846,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.3182,
                "accurate_pass": 11.8498,
                "duels_won": 5.2433,
                "total_long_balls": 2.3639,
                "accurate_long_balls": 1.1254,
                "total_opp_half_passes": 10.8186,
                "accurate_opp_half_passes": 7.7399,
                "crosses_total": 2.3975,
                "crosses_accurate": 0.0,
                "touches": 38.1017,
                "possession_lost": 12.0967,
                "dispossessed": 0.1648,
                "duels_lost": 5.1832,
                "aerial_lost": 0.6021,
                "total_contest": 2.6359,
                "won_contest": 1.3325,
                "ball_recovery": 2.7791,
                "challenges_lost": 1.6353,
                "fouls": 1.4776,
                "fouls_drawn": 0.1401,
                "assist_rate": 0.433,
                "assists": 0,
                "interceptions": 1.6324,
                "tackles_won": 1.662,
                "tackles": 3.3087,
                "clearances": 0.4986,
                "blocks": 0.3339,
                "big_chances_created": 0.1648,
                "big_chances_missed": 0.1942,
                "xgot": 0.2305,
                "offsides": 0.1938,
                "ball_carries": 8.4807,
                "total_progression": 51.9204,
                "progressive_carries": 1.9242,
                "shots_off_target": 1.0199,
                "duel_xg_multiplier": 0.7242,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1499,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1041,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1499,
                "scorer_weight": 0.1793,
                "squad_weight_total": 1.0736,
                "weight_share": 0.167,
                "finishing_factor": 1.1041,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1624,
                "goal_rate": 0.1781,
                "goals": 0,
                "shots_on_target": 0.5994,
                "total_shots": 1.6193,
                "expected_assists": 0.1247,
                "key_pass": 1.0846,
                "rating": 6.9481,
                "minutes": 78.94,
                "total_pass": 16.3182,
                "accurate_pass": 11.8498,
                "duels_won": 5.2433,
                "total_long_balls": 2.3639,
                "accurate_long_balls": 1.1254,
                "total_opp_half_passes": 10.8186,
                "accurate_opp_half_passes": 7.7399,
                "crosses_total": 2.3975,
                "crosses_accurate": 0.0,
                "touches": 38.1017,
                "possession_lost": 12.0967,
                "dispossessed": 0.1648,
                "duels_lost": 5.1832,
                "aerial_lost": 0.6021,
                "total_contest": 2.6359,
                "won_contest": 1.3325,
                "ball_recovery": 2.7791,
                "challenges_lost": 1.6353,
                "fouls": 1.4776,
                "fouls_drawn": 0.1401,
                "assist_rate": 0.433,
                "assists": 0,
                "interceptions": 1.6324,
                "tackles_won": 1.662,
                "tackles": 3.3087,
                "clearances": 0.4986,
                "blocks": 0.3339,
                "big_chances_created": 0.1648,
                "big_chances_missed": 0.1942,
                "xgot": 0.2305,
                "offsides": 0.1938,
                "ball_carries": 8.4807,
                "total_progression": 51.9204,
                "progressive_carries": 1.9242,
                "shots_off_target": 1.0199,
                "duel_xg_multiplier": 0.7242,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "opponent_faced": "Jarrad Branthwaite, Vitaliy Mykolenko",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1499,
                "projected_assists": 0,
                "assist_probability": 0.1172,
                "finishing_factor": 1.1041,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.1172,
                "provider_weight": 0.1559,
                "squad_weight_total": 0.7134,
                "weight_share": 0.2185,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 14
              }
            }
          ]
        }
      },
      "bench_players": {
        "Jack Butland": {
          "player_id": 98448,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 196,
          "market_value": 1500000,
          "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": 4,
            "projected_substitution_expected_count": 2.857,
            "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": 75.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3258,
            "combined_rank_score": 1204.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2187.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jack Butland",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Christian Kofane",
                  "ranking": 3253
                },
                {
                  "player_name": "Oumar Solet",
                  "ranking": 3254
                },
                {
                  "player_name": "Boulaye Dia",
                  "ranking": 3255
                },
                {
                  "player_name": "Maxence Caqueret",
                  "ranking": 3256
                },
                {
                  "player_name": "Umar Sadiq",
                  "ranking": 3257
                }
              ],
              "lower": [
                {
                  "player_name": "Martin Terrier",
                  "ranking": 3259
                },
                {
                  "player_name": "Lucas Da Cunha",
                  "ranking": 3260
                },
                {
                  "player_name": "Strahinja Pavlović",
                  "ranking": 3261
                },
                {
                  "player_name": "Félix Correia",
                  "ranking": 3262
                },
                {
                  "player_name": "Kenneth Taylor",
                  "ranking": 3263
                }
              ]
            }
          },
          "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 (€1,500,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": 1500000,
                "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": 4,
                "projected_substitution_expected_count": 2.857,
                "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.109,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 8 by projected rating, fifa_overall 75.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": 4,
                "projected_substitution_expected_count": 2.857,
                "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": 75.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3258,
                "fifa_rank": 2187.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            }
          ]
        },
        "Charlie Hughes": {
          "player_id": 1138398,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 185,
          "market_value": 9100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "total_pass": 7,
            "accurate_pass": 5,
            "expected_goals": 0.0028,
            "rating": 6.9,
            "minutes": 14,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 1.0169,
            "dispossessed": 0.5,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 1,
            "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.0062,
            "assists": 0,
            "expected_assists": 0.0079,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.002,
            "key_pass": 0,
            "ball_carries": 3,
            "total_progression": 9,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.312,
            "bench_expected_minutes": 13.87,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3431,
            "combined_rank_score": 1424.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2693.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9,
            "source_file": "data/player_rankings.csv",
            "player_name": "Charlie Hughes",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ilia Gruev",
                  "ranking": 3426
                },
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Wilson Isidor",
                  "ranking": 3432
                },
                {
                  "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
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "D_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 13.86683638124688,
            "bench_appearance_prob": 0.3121289264203127,
            "market_value_adjustment": 0.5118,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€9,100,000) scaled to 13.9 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position D (quality 0.51)",
              "stats": {
                "interceptions": 1.6,
                "tackles": 2.4,
                "tackles_won": 1.5,
                "clearances": 2.7,
                "aerial_won": 2.3,
                "duels_won": 5.6,
                "total_pass": 44.0,
                "accurate_pass": 35.0,
                "expected_goals": 0.018,
                "rating": 6.9,
                "minutes": 90.0,
                "total_long_balls": 6.0,
                "accurate_long_balls": 3.0,
                "total_own_half_passes": 28.0,
                "accurate_own_half_passes": 23.0,
                "total_opp_half_passes": 10.0,
                "accurate_opp_half_passes": 7.0,
                "crosses_total": 0.9,
                "crosses_accurate": 0.4,
                "touches": 60.0,
                "possession_lost": 6.6,
                "dispossessed": 0.5,
                "duels_lost": 3.5,
                "aerial_lost": 2.0,
                "total_contest": 4.0,
                "won_contest": 2.3,
                "ball_recovery": 5.0,
                "challenges_lost": 1.0,
                "fouls": 1.0,
                "fouls_drawn": 0.7,
                "blocks": 0.7,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.04,
                "assist_rate": 0.04,
                "expected_assists": 0.051,
                "total_shots": 0.4,
                "shots_on_target": 0.15,
                "shots_off_target": 0.2,
                "big_chances_created": 0.04,
                "xgot": 0.013,
                "key_pass": 0.6,
                "ball_carries": 20.0,
                "total_progression": 61.0,
                "progressive_carries": 5.0
              },
              "params": {
                "market_value_eur": 9100000,
                "quality_factor": 0.5118
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 13.9 expected minutes (appearance prob 0.31)",
              "stats": {
                "interceptions": 0.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0062,
                "assist_rate": 0.0062,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87
              },
              "params": {
                "expected_minutes": 13.87,
                "projection_minutes": 90.0,
                "minutes_scale": 0.1541,
                "appearance_probability": 0.312
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0062,
                "assist_rate": 0.0062,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87
              },
              "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.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0062,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.312,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 4 by projected rating, fifa_overall 74.0; not used by the projection)",
              "stats": {
                "interceptions": 0.2465,
                "tackles": 0.3698,
                "tackles_won": 0.2311,
                "clearances": 0.416,
                "aerial_won": 0.3544,
                "duels_won": 0.8628,
                "total_pass": 6.7793,
                "accurate_pass": 5.3927,
                "expected_goals": 0.0028,
                "rating": 6.9,
                "minutes": 13.87,
                "total_long_balls": 0.9245,
                "accurate_long_balls": 0.4622,
                "total_own_half_passes": 4.3141,
                "accurate_own_half_passes": 3.5437,
                "total_opp_half_passes": 1.5408,
                "accurate_opp_half_passes": 1.0785,
                "crosses_total": 0.1387,
                "crosses_accurate": 0.0616,
                "touches": 9.2446,
                "possession_lost": 1.0169,
                "dispossessed": 0.5,
                "duels_lost": 0.5393,
                "aerial_lost": 2.0,
                "total_contest": 0.6163,
                "won_contest": 0.3544,
                "ball_recovery": 0.7704,
                "challenges_lost": 1.0,
                "fouls": 0.1541,
                "fouls_drawn": 0.1079,
                "blocks": 0.1079,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0062,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0.0616,
                "shots_on_target": 0.0231,
                "shots_off_target": 0.0308,
                "big_chances_created": 0.0062,
                "xgot": 0.002,
                "key_pass": 0.0924,
                "ball_carries": 3.0815,
                "total_progression": 9.3986,
                "progressive_carries": 0.7704,
                "bench_appearance_probability": 0.312,
                "bench_expected_minutes": 13.87,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3431,
                "fifa_rank": 2693.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Lucas Herrington": {
          "player_id": 1646783,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 193,
          "market_value": 8800000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.6178,
            "minutes": 23,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.0291,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 1,
            "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.0,
            "expected_assists": 0.0055,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.608,
            "bench_expected_minutes": 22.73,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0033,
            "finishing_factor": 1.0,
            "creation_factor": 0.9158,
            "fifa_overall": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0233,
                "expected_assists": 0.0259,
                "total_shots": 1,
                "total_pass": 51,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 31,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0145,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "interceptions": 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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 31,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "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": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 26,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 7040,
            "combined_rank_score": 5366.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 261.0,
            "sofascore_rating": 7.0909,
            "sofascore_appearances": 11.0,
            "fifa_rank": 10471.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6178,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Herrington",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas Pratto",
                  "ranking": 7035
                },
                {
                  "player_name": "Pedro Bicalho",
                  "ranking": 7036
                },
                {
                  "player_name": "Léo Vieira",
                  "ranking": 7037
                },
                {
                  "player_name": "Peter Žulj",
                  "ranking": 7038
                },
                {
                  "player_name": "Caju",
                  "ranking": 7039
                }
              ],
              "lower": [
                {
                  "player_name": "Bernard Tekpetey",
                  "ranking": 7041
                },
                {
                  "player_name": "Jhojan Torres",
                  "ranking": 7042
                },
                {
                  "player_name": "Olivier Verdon",
                  "ranking": 7043
                },
                {
                  "player_name": "Alan Soñora",
                  "ranking": 7044
                },
                {
                  "player_name": "Diego Coelho",
                  "ranking": 7045
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.57,
          "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.57,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.73,
            "bench_appearance_prob": 0.608,
            "market_value_adjustment": 1.0005,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 30.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0467
            },
            "rationale": "Bench projection scaled from XGBoost D_service (5 historical appearances) to 22.7 expected mins (appearance prob 0.61); FBref playing time empirical prior: 2.0 sub appearances, 30.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3165,
                "tackles": 0.49,
                "tackles_won": 0.3478,
                "clearances": 0.9523,
                "aerial_won": 0.5141,
                "total_shots": 0.1272,
                "rating": 6.6178,
                "minutes": 23.89,
                "total_pass": 7.6311,
                "accurate_pass": 6.55,
                "duels_won": 0.8449,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.442,
                "accurate_own_half_passes": 4.442,
                "total_opp_half_passes": 3.1891,
                "accurate_opp_half_passes": 2.108,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.442,
                "possession_lost": 1.0811,
                "dispossessed": 0.0,
                "duels_lost": 0.8473,
                "aerial_lost": 0.5806,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2667,
                "challenges_lost": 0.0,
                "fouls": 0.2667,
                "fouls_drawn": 0.0,
                "blocks": 0.2667,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8073,
                "total_progression": 3.0346,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1272
              },
              "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": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.0768,
                  "aerialWon": 0.9615,
                  "totalClearance_p90": 3.7779,
                  "totalTackle": 0.4645,
                  "totalPass": 19.3251
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.31649088859558105,
                    "model_output": 0.3165,
                    "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.4563
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0379
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0127
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0101
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0159,
                      "total": 0.3165,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.759749
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.099217
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.035506
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.029261
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.023528
                        }
                      ],
                      "others_margin": -0.0492
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.48998621106147766,
                    "model_output": 0.49,
                    "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.753
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0441
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0195
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.018
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0166
                        }
                      ],
                      "others": -0.0527,
                      "total": 0.49,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.777001
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.071298
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.033185
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.031681
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.030193
                        }
                      ],
                      "others_margin": -0.10211
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.34775567054748535,
                    "model_output": 0.3478,
                    "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.4415
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0211
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0145
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0128
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0093
                        }
                      ],
                      "others": -0.0364,
                      "total": 0.3478,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.727225
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.052387
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.036346
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.031911
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.023817
                        }
                      ],
                      "others_margin": -0.099847
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.952296793460846,
                    "model_output": 0.9523,
                    "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.2183
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.1872
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1333
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0453
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0466
                        }
                      ],
                      "others": -0.0522,
                      "total": 0.9523,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.029228
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.164666
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.136317
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.048464
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.047503
                        }
                      ],
                      "others_margin": -0.053418
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5141190886497498,
                    "model_output": 0.5141,
                    "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.8236
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0995
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0428
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0309
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0179
                        }
                      ],
                      "others": 0.0492,
                      "total": 0.5141,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.906093
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.196306
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.097834
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.071583
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.039367
                        }
                      ],
                      "others_margin": 0.100429
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.127165287733078,
                    "model_output": 0.1272,
                    "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.2053
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0579
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0163
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0126
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0117
                        }
                      ],
                      "others": -0.0653,
                      "total": 0.1272,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.205287
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.057931
                        },
                        {
                          "name": "rating",
                          "margin": -0.016283
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.012561
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.011728
                        }
                      ],
                      "others_margin": -0.065299
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6177544593811035,
                    "model_output": 6.6178,
                    "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.0339
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0229
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0201
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0155
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.015
                        }
                      ],
                      "others": -0.0599,
                      "total": 6.6178,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.033927
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.022856
                        },
                        {
                          "name": "rating",
                          "margin": -0.020114
                        },
                        {
                          "name": "touches",
                          "margin": -0.015539
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.01497
                        }
                      ],
                      "others_margin": -0.059972
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0005, quality 0.508)",
              "stats": {
                "interceptions": 0.3166,
                "tackles": 0.4902,
                "tackles_won": 0.3479,
                "clearances": 0.9528,
                "aerial_won": 0.5144,
                "total_shots": 0.1273,
                "rating": 6.6178,
                "minutes": 23.89,
                "total_pass": 7.6349,
                "accurate_pass": 6.5533,
                "duels_won": 0.8453,
                "total_long_balls": 0.2268,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4442,
                "accurate_own_half_passes": 4.4442,
                "total_opp_half_passes": 3.1907,
                "accurate_opp_half_passes": 2.1091,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.4472,
                "possession_lost": 1.0816,
                "dispossessed": 0.0,
                "duels_lost": 0.8477,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2668,
                "challenges_lost": 0.0,
                "fouls": 0.2668,
                "fouls_drawn": 0.0,
                "blocks": 0.2668,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8082,
                "total_progression": 3.0361,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1273
              },
              "params": {
                "market_value_eur": 8800000,
                "quality_factor": 0.5083,
                "boost_factor": 1.0005,
                "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.0152)",
              "stats": {
                "interceptions": 0.3118,
                "tackles": 0.4902,
                "tackles_won": 0.3426,
                "clearances": 0.9528,
                "aerial_won": 0.5144,
                "total_shots": 0.1254,
                "rating": 6.6178,
                "minutes": 23.89,
                "total_pass": 7.6349,
                "accurate_pass": 6.5533,
                "duels_won": 0.8453,
                "total_long_balls": 0.2268,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4442,
                "accurate_own_half_passes": 4.4442,
                "total_opp_half_passes": 3.1907,
                "accurate_opp_half_passes": 2.1091,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.4472,
                "possession_lost": 1.0816,
                "dispossessed": 0.0,
                "duels_lost": 0.8477,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2668,
                "challenges_lost": 0.0,
                "fouls": 0.2628,
                "fouls_drawn": 0.0,
                "blocks": 0.2668,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8082,
                "total_progression": 3.0361,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1273
              },
              "params": {
                "blend_weight": 0.0152,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2654,
                "prior_reliability": 0.0467,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.3479,
                  "after": 0.3426
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.9 to 22.7 expected minutes (appearance prob 0.61)",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0046,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73
              },
              "params": {
                "expected_minutes": 22.73,
                "projection_minutes": 23.89,
                "minutes_scale": 0.9514,
                "appearance_probability": 0.608
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0046,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.0,
                "creation_factor": 0.9158
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.608
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 16 by projected rating, fifa_overall 66.0; not used by the projection)",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.0,
                "creation_factor": 0.9158,
                "fifa_overall": 66.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": 7040,
                "fifa_rank": 10471.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 66.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.0,
                "creation_factor": 0.9158,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0009,
                "finishing_factor": 1.0,
                "appearance_weight": 0.608,
                "weight_rank": 14,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0033,
                "finishing_factor": 1.0,
                "creation_factor": 0.9158,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0033,
                "provider_weight": 0.0031,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0043,
                "creation_factor": 0.9158,
                "appearance_weight": 0.608,
                "weight_rank": 13,
                "eligible_players": 14
              }
            }
          ]
        },
        "Christos Mouzakitis": {
          "player_id": 1416540,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 178,
          "market_value": 26000000,
          "stats": {
            "key_pass": 1,
            "assist_rate": 0.0408,
            "assists": 0,
            "expected_assists": 0.0551,
            "expected_goals": 0.0307,
            "total_shots": 0,
            "total_pass": 15,
            "accurate_pass": 12,
            "ball_recovery": 2,
            "duels_won": 2,
            "rating": 7.2,
            "minutes": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 2.4996,
            "dispossessed": 0.9,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.023,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0209,
            "ball_carries": 9,
            "total_progression": 24,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.543,
            "bench_expected_minutes": 22.96,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0164,
            "projected_assists": 0,
            "assist_probability": 0.0291,
            "finishing_factor": 0.9171,
            "creation_factor": 0.9439,
            "fifa_overall": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4143,
            "combined_rank_score": 2149.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 745.0,
            "sofascore_rating": 6.6667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 3554.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Christos Mouzakitis",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nicolás Valentini",
                  "ranking": 4138
                },
                {
                  "player_name": "Borna Sosa",
                  "ranking": 4139
                },
                {
                  "player_name": "Nathan Broadhead",
                  "ranking": 4140
                },
                {
                  "player_name": "Fábio Cardoso",
                  "ranking": 4141
                },
                {
                  "player_name": "Jorge Sánchez",
                  "ranking": 4142
                }
              ],
              "lower": [
                {
                  "player_name": "Sammie Szmodics",
                  "ranking": 4144
                },
                {
                  "player_name": "Mathias Honsak",
                  "ranking": 4145
                },
                {
                  "player_name": "Dan Neil",
                  "ranking": 4146
                },
                {
                  "player_name": "Juan Cruz",
                  "ranking": 4147
                },
                {
                  "player_name": "Lukas Petkov",
                  "ranking": 4148
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "M_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 22.95590653284853,
            "bench_appearance_prob": 0.5434502969476606,
            "market_value_adjustment": 0.6858,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€26,000,000) scaled to 23.0 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position M (quality 0.69)",
              "stats": {
                "key_pass": 2.2,
                "assists": 0.16,
                "assist_rate": 0.16,
                "expected_assists": 0.181,
                "expected_goals": 0.116,
                "total_shots": 1.7,
                "total_pass": 60.0,
                "accurate_pass": 49.0,
                "ball_recovery": 6.3,
                "duels_won": 7.3,
                "rating": 7.2,
                "minutes": 90.0,
                "total_long_balls": 5.0,
                "accurate_long_balls": 3.0,
                "total_own_half_passes": 24.0,
                "accurate_own_half_passes": 19.0,
                "total_opp_half_passes": 24.0,
                "accurate_opp_half_passes": 18.0,
                "crosses_total": 1.7,
                "crosses_accurate": 0.8,
                "touches": 74.0,
                "possession_lost": 9.8,
                "dispossessed": 0.9,
                "duels_lost": 4.9,
                "aerial_won": 1.5,
                "aerial_lost": 1.2,
                "interceptions": 1.3,
                "tackles_won": 1.7,
                "tackles": 2.3,
                "clearances": 1.0,
                "total_contest": 4.7,
                "won_contest": 2.7,
                "challenges_lost": 1.3,
                "fouls": 1.8,
                "fouls_drawn": 1.3,
                "goals": 0.09,
                "goal_rate": 0.09,
                "shots_on_target": 0.7,
                "shots_off_target": 0.6,
                "blocks": 0.4,
                "big_chances_created": 0.13,
                "big_chances_missed": 0.07,
                "xgot": 0.079,
                "ball_carries": 36.0,
                "total_progression": 95.0,
                "progressive_carries": 8.0
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 23.0 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.5611,
                "assists": 0.0408,
                "assist_rate": 0.0408,
                "expected_assists": 0.0462,
                "expected_goals": 0.0296,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goals": 0.023,
                "goal_rate": 0.023,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0202,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96
              },
              "params": {
                "expected_minutes": 22.96,
                "projection_minutes": 90.0,
                "minutes_scale": 0.2551,
                "appearance_probability": 0.543
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5611,
                "assists": 0.0408,
                "assist_rate": 0.0408,
                "expected_assists": 0.0462,
                "expected_goals": 0.0296,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goals": 0.023,
                "goal_rate": 0.023,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0202,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9171,
                "creation_factor": 0.9439
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.543
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0462,
                  "after": 0.0551
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 1 by projected rating, fifa_overall 73.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9171,
                "creation_factor": 0.9439,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4143,
                "fifa_rank": 3554.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0164,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9171,
                "creation_factor": 0.9439,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0164,
                "scorer_weight": 0.0153,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0142,
                "finishing_factor": 0.9171,
                "appearance_weight": 0.543,
                "weight_rank": 11,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0164,
                "projected_assists": 0,
                "assist_probability": 0.0291,
                "finishing_factor": 0.9171,
                "creation_factor": 0.9439,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0291,
                "provider_weight": 0.0282,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0396,
                "creation_factor": 0.9439,
                "appearance_weight": 0.543,
                "weight_rank": 8,
                "eligible_players": 14
              }
            }
          ]
        },
        "Tim Iroegbunam": {
          "player_id": 1085950,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 42,
          "height": 182,
          "market_value": 18500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0288,
            "assist_rate": 0.0536,
            "assists": 0,
            "expected_goals": 0.0618,
            "goal_rate": 0.041,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6896,
            "minutes": 23,
            "total_pass": 9,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 3.7692,
            "dispossessed": 0.2886,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0118,
            "ball_carries": 5,
            "total_progression": 29,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.531,
            "bench_expected_minutes": 22.68,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "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": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1173,
                "expected_assists": 0.0122,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 21,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "Premier 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": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 84,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 22,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 73,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0422,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0425,
                "expected_assists": 0.0175,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 33,
                "accurate_pass": 26,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 5,
                "duels_won": 11,
                "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": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 89,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 12,
                "tackles": 6,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "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": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 25,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.092,
                "expected_assists": 0.0244,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 13,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025022,
              "match_date": "2026-04-11",
              "home_team": "Brentford",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Brentford",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 3,
                "tackles": 2,
                "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": 14024017,
              "match_date": "2026-03-21",
              "home_team": "Everton",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0424,
                "total_shots": 1,
                "shots_on_target": 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": 3277,
            "combined_rank_score": 1220.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 640.0,
            "sofascore_rating": 6.7519,
            "sofascore_appearances": 29.0,
            "fifa_rank": 1801.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6896,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tim Iroegbunam",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Marco Reus",
                  "ranking": 3272
                },
                {
                  "player_name": "Santiago Bueno",
                  "ranking": 3273
                },
                {
                  "player_name": "Hany Mukhtar",
                  "ranking": 3274
                },
                {
                  "player_name": "Aleksey Miranchuk",
                  "ranking": 3275
                },
                {
                  "player_name": "Alfonso Herrero",
                  "ranking": 3276
                }
              ],
              "lower": [
                {
                  "player_name": "Jaminton Campaz",
                  "ranking": 3278
                },
                {
                  "player_name": "Miguel Merentiel",
                  "ranking": 3279
                },
                {
                  "player_name": "Pep Biel",
                  "ranking": 3280
                },
                {
                  "player_name": "Beñat Prados",
                  "ranking": 3281
                },
                {
                  "player_name": "Zlatko Tripić",
                  "ranking": 3282
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 32,
          "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": 32,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.679596783510213,
            "bench_appearance_prob": 0.5308907628868278,
            "market_value_adjustment": 1.0045,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (32 historical appearances) to 22.7 expected mins (appearance prob 0.53)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2821,
                "expected_assists": 0.0238,
                "assists": 0.0442,
                "assist_rate": 0.0442,
                "expected_goals": 0.0509,
                "goals": 0.0339,
                "goal_rate": 0.0339,
                "shots_on_target": 0.1328,
                "total_shots": 0.5247,
                "rating": 6.6896,
                "minutes": 18.79,
                "total_pass": 7.3498,
                "accurate_pass": 5.8197,
                "duels_won": 1.91,
                "total_long_balls": 0.2111,
                "accurate_long_balls": 0.1877,
                "total_own_half_passes": 2.5132,
                "accurate_own_half_passes": 1.959,
                "total_opp_half_passes": 4.8365,
                "accurate_opp_half_passes": 3.8606,
                "crosses_total": 0.0858,
                "crosses_accurate": 0.0,
                "touches": 11.8895,
                "possession_lost": 3.1088,
                "dispossessed": 0.2873,
                "duels_lost": 1.3717,
                "aerial_won": 0.5015,
                "aerial_lost": 0.1842,
                "interceptions": 0.2488,
                "tackles_won": 0.4889,
                "tackles": 0.7624,
                "clearances": 0.0,
                "total_contest": 0.8675,
                "won_contest": 0.5788,
                "challenges_lost": 0.0,
                "fouls": 0.6114,
                "fouls_drawn": 0.0672,
                "blocks": 0.0403,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0098,
                "ball_carries": 4.3288,
                "total_progression": 23.7558,
                "progressive_carries": 0.657,
                "shots_off_target": 0.3919
              },
              "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": "Newcastle United",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1508,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1282,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.109,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0484,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Brentford",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0411,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Chelsea",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 0.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.5683,
                  "creative_index": 0.1517,
                  "expectedGoals": 0.0299,
                  "expectedAssists": 0.0139,
                  "onTargetScoringAttempt": 0.0349
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.282146692276001,
                    "model_output": 0.2821,
                    "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.3623
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.056
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0448
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0368
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0179
                        }
                      ],
                      "others": -0.0863,
                      "total": 0.2821,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.525598
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.113039
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.100571
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.091042
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.047408
                        }
                      ],
                      "others_margin": -0.266855
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.023780005052685738,
                    "model_output": 0.0238,
                    "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.0281
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0146
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0062
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0038
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0022
                        }
                      ],
                      "others": -0.0071,
                      "total": 0.0238,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.396449
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.290937
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.154994
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.109513
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.069542
                        }
                      ],
                      "others_margin": -0.261427
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04415442422032356,
                    "model_output": 0.0442,
                    "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.0176
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0079
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0071
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0055
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0045
                        }
                      ],
                      "others": -0.0126,
                      "total": 0.0442,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.23176
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.123684
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.1128
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.085436
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.076132
                        }
                      ],
                      "others_margin": -0.253444
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.050932519137859344,
                    "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.0354
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0076
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0055
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0033
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0028
                        }
                      ],
                      "others": 0.0055,
                      "total": 0.0509,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.469121
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.137264
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.11371
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.074647
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.062938
                        }
                      ],
                      "others_margin": 0.114467
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03387744724750519,
                    "model_output": 0.0339,
                    "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.0373
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0115
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0033
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0026
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0019
                        }
                      ],
                      "others": -0.0071,
                      "total": 0.0339,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.481788
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.211174
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069855
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.059741
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.044449
                        }
                      ],
                      "others_margin": -0.191584
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.13278770446777344,
                    "model_output": 0.1328,
                    "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.1171
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0508
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0279
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0201
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0109
                        }
                      ],
                      "others": -0.0202,
                      "total": 0.1328,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.448444
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.281805
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.164678
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.115748
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.068735
                        }
                      ],
                      "others_margin": -0.141913
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.524680495262146,
                    "model_output": 0.5247,
                    "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.3167
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1772
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.043
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0399
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0329
                        }
                      ],
                      "others": 0.0579,
                      "total": 0.5247,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.316673
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.177249
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.042988
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.039877
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.032905
                        }
                      ],
                      "others_margin": 0.057931
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.689579486846924,
                    "model_output": 6.6896,
                    "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.0683
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0341
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0151
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0115
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0106
                        }
                      ],
                      "others": -0.0409,
                      "total": 6.6896,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.068251
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.034121
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.015082
                        },
                        {
                          "name": "rating",
                          "margin": -0.011529
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.010551
                        }
                      ],
                      "others_margin": -0.040859
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 32,
                  "role_matches": 15,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0045, quality 0.616)",
              "stats": {
                "key_pass": 0.2834,
                "expected_assists": 0.0239,
                "assists": 0.0444,
                "assist_rate": 0.0444,
                "expected_goals": 0.0512,
                "goals": 0.034,
                "goal_rate": 0.034,
                "shots_on_target": 0.1334,
                "total_shots": 0.5271,
                "rating": 6.6896,
                "minutes": 18.79,
                "total_pass": 7.3829,
                "accurate_pass": 5.8459,
                "duels_won": 1.9186,
                "total_long_balls": 0.212,
                "accurate_long_balls": 0.1885,
                "total_own_half_passes": 2.5245,
                "accurate_own_half_passes": 1.9678,
                "total_opp_half_passes": 4.8583,
                "accurate_opp_half_passes": 3.878,
                "crosses_total": 0.0862,
                "crosses_accurate": 0.0,
                "touches": 11.943,
                "possession_lost": 3.1228,
                "dispossessed": 0.2886,
                "duels_lost": 1.3779,
                "aerial_won": 0.5038,
                "aerial_lost": 0.185,
                "interceptions": 0.2499,
                "tackles_won": 0.4911,
                "tackles": 0.7658,
                "clearances": 0.0,
                "total_contest": 0.8714,
                "won_contest": 0.5814,
                "challenges_lost": 0.0,
                "fouls": 0.6142,
                "fouls_drawn": 0.0675,
                "blocks": 0.0405,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0098,
                "ball_carries": 4.3483,
                "total_progression": 23.8627,
                "progressive_carries": 0.66,
                "shots_off_target": 0.3937
              },
              "params": {
                "market_value_eur": 18500000,
                "quality_factor": 0.6161,
                "boost_factor": 1.0045,
                "reference_quality": 0.505,
                "history_matches": 32,
                "history_shrink": 0.1351,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.8 to 22.7 expected minutes (appearance prob 0.53)",
              "stats": {
                "key_pass": 0.3421,
                "expected_assists": 0.0288,
                "assists": 0.0536,
                "assist_rate": 0.0536,
                "expected_goals": 0.0618,
                "goals": 0.041,
                "goal_rate": 0.041,
                "shots_on_target": 0.161,
                "total_shots": 0.6362,
                "rating": 6.6896,
                "minutes": 22.68,
                "total_pass": 8.9112,
                "accurate_pass": 7.056,
                "duels_won": 2.3158,
                "total_long_balls": 0.2559,
                "accurate_long_balls": 0.2275,
                "total_own_half_passes": 3.0471,
                "accurate_own_half_passes": 2.3751,
                "total_opp_half_passes": 5.864,
                "accurate_opp_half_passes": 4.6808,
                "crosses_total": 0.104,
                "crosses_accurate": 0.0,
                "touches": 14.4152,
                "possession_lost": 3.7692,
                "dispossessed": 0.2886,
                "duels_lost": 1.6631,
                "aerial_won": 0.6081,
                "aerial_lost": 0.185,
                "interceptions": 0.3016,
                "tackles_won": 0.5928,
                "tackles": 0.9243,
                "clearances": 0.0,
                "total_contest": 1.0518,
                "won_contest": 0.7018,
                "challenges_lost": 0.0,
                "fouls": 0.7413,
                "fouls_drawn": 0.0815,
                "blocks": 0.0489,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0118,
                "ball_carries": 5.2484,
                "total_progression": 28.8024,
                "progressive_carries": 0.7966,
                "shots_off_target": 0.4752,
                "bench_appearance_probability": 0.531,
                "bench_expected_minutes": 22.68
              },
              "params": {
                "expected_minutes": 22.68,
                "projection_minutes": 18.79,
                "minutes_scale": 1.207,
                "appearance_probability": 0.531
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3421,
                "expected_assists": 0.0288,
                "assists": 0.0536,
                "assist_rate": 0.0536,
                "expected_goals": 0.0618,
                "goals": 0.041,
                "goal_rate": 0.041,
                "shots_on_target": 0.161,
                "total_shots": 0.6362,
                "rating": 6.6896,
                "minutes": 22.68,
                "total_pass": 8.9112,
                "accurate_pass": 7.056,
                "duels_won": 2.3158,
                "total_long_balls": 0.2559,
                "accurate_long_balls": 0.2275,
                "total_own_half_passes": 3.0471,
                "accurate_own_half_passes": 2.3751,
                "total_opp_half_passes": 5.864,
                "accurate_opp_half_passes": 4.6808,
                "crosses_total": 0.104,
                "crosses_accurate": 0.0,
                "touches": 14.4152,
                "possession_lost": 3.7692,
                "dispossessed": 0.2886,
                "duels_lost": 1.6631,
                "aerial_won": 0.6081,
                "aerial_lost": 0.185,
                "interceptions": 0.3016,
                "tackles_won": 0.5928,
                "tackles": 0.9243,
                "clearances": 0.0,
                "total_contest": 1.0518,
                "won_contest": 0.7018,
                "challenges_lost": 0.0,
                "fouls": 0.7413,
                "fouls_drawn": 0.0815,
                "blocks": 0.0489,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0118,
                "ball_carries": 5.2484,
                "total_progression": 28.8024,
                "progressive_carries": 0.7966,
                "shots_off_target": 0.4752,
                "bench_appearance_probability": 0.531,
                "bench_expected_minutes": 22.68
              },
              "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.3421,
                "expected_assists": 0.0288,
                "assist_rate": 0.0536,
                "assists": 0,
                "expected_goals": 0.0618,
                "goal_rate": 0.041,
                "goals": 0,
                "shots_on_target": 0.161,
                "total_shots": 0.6362,
                "rating": 6.6896,
                "minutes": 22.68,
                "total_pass": 8.9112,
                "accurate_pass": 7.056,
                "duels_won": 2.3158,
                "total_long_balls": 0.2559,
                "accurate_long_balls": 0.2275,
                "total_own_half_passes": 3.0471,
                "accurate_own_half_passes": 2.3751,
                "total_opp_half_passes": 5.864,
                "accurate_opp_half_passes": 4.6808,
                "crosses_total": 0.104,
                "crosses_accurate": 0.0,
                "touches": 14.4152,
                "possession_lost": 3.7692,
                "dispossessed": 0.2886,
                "duels_lost": 1.6631,
                "aerial_won": 0.6081,
                "aerial_lost": 0.185,
                "interceptions": 0.3016,
                "tackles_won": 0.5928,
                "tackles": 0.9243,
                "clearances": 0.0,
                "total_contest": 1.0518,
                "won_contest": 0.7018,
                "challenges_lost": 0.0,
                "fouls": 0.7413,
                "fouls_drawn": 0.0815,
                "blocks": 0.0489,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0118,
                "ball_carries": 5.2484,
                "total_progression": 28.8024,
                "progressive_carries": 0.7966,
                "shots_off_target": 0.4752,
                "bench_appearance_probability": 0.531,
                "bench_expected_minutes": 22.68,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.531,
                "projected_substitutes": 4,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 14 by projected rating, fifa_overall 76.0; not used by the projection)",
              "stats": {
                "key_pass": 0.3421,
                "expected_assists": 0.0288,
                "assist_rate": 0.0536,
                "assists": 0,
                "expected_goals": 0.0618,
                "goal_rate": 0.041,
                "goals": 0,
                "shots_on_target": 0.161,
                "total_shots": 0.6362,
                "rating": 6.6896,
                "minutes": 22.68,
                "total_pass": 8.9112,
                "accurate_pass": 7.056,
                "duels_won": 2.3158,
                "total_long_balls": 0.2559,
                "accurate_long_balls": 0.2275,
                "total_own_half_passes": 3.0471,
                "accurate_own_half_passes": 2.3751,
                "total_opp_half_passes": 5.864,
                "accurate_opp_half_passes": 4.6808,
                "crosses_total": 0.104,
                "crosses_accurate": 0.0,
                "touches": 14.4152,
                "possession_lost": 3.7692,
                "dispossessed": 0.2886,
                "duels_lost": 1.6631,
                "aerial_won": 0.6081,
                "aerial_lost": 0.185,
                "interceptions": 0.3016,
                "tackles_won": 0.5928,
                "tackles": 0.9243,
                "clearances": 0.0,
                "total_contest": 1.0518,
                "won_contest": 0.7018,
                "challenges_lost": 0.0,
                "fouls": 0.7413,
                "fouls_drawn": 0.0815,
                "blocks": 0.0489,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0118,
                "ball_carries": 5.2484,
                "total_progression": 28.8024,
                "progressive_carries": 0.7966,
                "shots_off_target": 0.4752,
                "bench_appearance_probability": 0.531,
                "bench_expected_minutes": 22.68,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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": 76.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": 3277,
                "fifa_rank": 1801.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Robinio Vaz": {
          "player_id": 1514800,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 47,
          "height": 185,
          "market_value": 18700000,
          "stats": {
            "expected_goals": 0.0949,
            "goal_rate": 0.09,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0389,
            "key_pass": 1,
            "rating": 6.5772,
            "minutes": 26,
            "total_pass": 8,
            "accurate_pass": 6,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 16,
            "possession_lost": 6.2698,
            "dispossessed": 0.9411,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 8,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.591,
            "bench_expected_minutes": 26.01,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0535,
            "projected_assists": 0,
            "assist_probability": 0.0225,
            "finishing_factor": 0.9894,
            "creation_factor": 0.8,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 4480,
            "combined_rank_score": 2500.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4913.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5772,
            "source_file": "data/player_rankings.csv",
            "player_name": "Robinio Vaz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Christopher Bonsu Baah",
                  "ranking": 4475
                },
                {
                  "player_name": "Valentin Atangana",
                  "ranking": 4476
                },
                {
                  "player_name": "Alex Luna",
                  "ranking": 4477
                },
                {
                  "player_name": "Matt Crooks",
                  "ranking": 4478
                },
                {
                  "player_name": "Lautaro Rivero",
                  "ranking": 4479
                }
              ],
              "lower": [
                {
                  "player_name": "Franco Vázquez",
                  "ranking": 4481
                },
                {
                  "player_name": "Fraser Forster",
                  "ranking": 4482
                },
                {
                  "player_name": "Rodrigo Rey",
                  "ranking": 4483
                },
                {
                  "player_name": "Conan Ledesma",
                  "ranking": 4484
                },
                {
                  "player_name": "Rafael Santos Borré",
                  "ranking": 4485
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2,
          "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": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.007630757726062,
            "bench_appearance_prob": 0.5912559435330029,
            "market_value_adjustment": 1.0242,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 26.0 expected mins (appearance prob 0.59)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0596,
                "goals": 0.0586,
                "goal_rate": 0.0586,
                "shots_on_target": 0.2047,
                "total_shots": 0.5606,
                "expected_assists": 0.0211,
                "key_pass": 0.3856,
                "rating": 6.5772,
                "minutes": 15.08,
                "total_pass": 5.2432,
                "accurate_pass": 4.1621,
                "duels_won": 1.0,
                "total_long_balls": 0.5405,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2432,
                "accurate_opp_half_passes": 4.1621,
                "crosses_total": 0.5405,
                "crosses_accurate": 0.0,
                "touches": 10.2432,
                "possession_lost": 4.0811,
                "dispossessed": 0.9189,
                "duels_lost": 1.9189,
                "aerial_lost": 0.5405,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.0,
                "challenges_lost": 0.0,
                "fouls": 0.4595,
                "fouls_drawn": 1.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.0811,
                "total_progression": 4.9128,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3559
              },
              "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": "Newcastle United",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0,
                  "totalOppositionHalfPasses": 5.2432,
                  "accurateOppositionHalfPasses": 4.1622,
                  "accuratePass": 4.1622,
                  "totalShots": 0.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05958842858672142,
                    "model_output": 0.0596,
                    "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.0877
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0208
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0072
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0062
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0139,
                      "total": 0.0596,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.58138
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.206884
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.083358
                        },
                        {
                          "name": "goals",
                          "margin": -0.077862
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.048051
                        }
                      ],
                      "others_margin": -0.20808
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05855240300297737,
                    "model_output": 0.0586,
                    "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.0691
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0244
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0101
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.009
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0246,
                      "total": 0.0586,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.414414
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.200341
                        },
                        {
                          "name": "goals",
                          "margin": -0.096442
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.094331
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.090336
                        }
                      ],
                      "others_margin": -0.351104
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20470105111598969,
                    "model_output": 0.2047,
                    "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.2134
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0197
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0184
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0169
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0142
                        }
                      ],
                      "others": -0.0497,
                      "total": 0.2047,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.506522
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.062766
                        },
                        {
                          "name": "goals",
                          "margin": -0.062456
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.060985
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.054171
                        }
                      ],
                      "others_margin": -0.217509
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5606281757354736,
                    "model_output": 0.5606,
                    "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.4749
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1189
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0479
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0305
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0249
                        }
                      ],
                      "others": -0.121,
                      "total": 0.5606,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.474942
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.118887
                        },
                        {
                          "name": "goals",
                          "margin": -0.047938
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.030465
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.024877
                        }
                      ],
                      "others_margin": -0.120967
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02114751935005188,
                    "model_output": 0.0211,
                    "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.0204
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0114
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0039
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0023
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0078,
                      "total": 0.0211,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.381775
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.301206
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.128172
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.078364
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.066344
                        }
                      ],
                      "others_margin": -0.312645
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3856106102466583,
                    "model_output": 0.3856,
                    "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.2583
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0498
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.03
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0256
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0244
                        }
                      ],
                      "others": -0.0487,
                      "total": 0.3856,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.483389
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.113207
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.066685
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.060504
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.057756
                        }
                      ],
                      "others_margin": -0.118753
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.577193260192871,
                    "model_output": 6.5772,
                    "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.0455
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0185
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0138
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0771,
                      "total": 6.5772,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.045548
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.018498
                        },
                        {
                          "name": "rating",
                          "margin": -0.017091
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013842
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.013028
                        }
                      ],
                      "others_margin": -0.076961
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 2,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0242, quality 0.618)",
              "stats": {
                "expected_goals": 0.061,
                "goals": 0.06,
                "goal_rate": 0.06,
                "shots_on_target": 0.2097,
                "total_shots": 0.5742,
                "expected_assists": 0.0217,
                "key_pass": 0.3949,
                "rating": 6.5772,
                "minutes": 15.08,
                "total_pass": 5.3701,
                "accurate_pass": 4.2628,
                "duels_won": 1.0242,
                "total_long_balls": 0.5536,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.3701,
                "accurate_opp_half_passes": 4.2628,
                "crosses_total": 0.5536,
                "crosses_accurate": 0.0,
                "touches": 10.4911,
                "possession_lost": 4.1799,
                "dispossessed": 0.9411,
                "duels_lost": 1.9653,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.0242,
                "challenges_lost": 0.0,
                "fouls": 0.4706,
                "fouls_drawn": 1.0242,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.1073,
                "total_progression": 5.0317,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3645
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.0242,
                "reference_quality": 0.505,
                "history_matches": 2,
                "history_shrink": 0.7143,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 15.1 to 26.0 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0915,
                "goals": 0.09,
                "goal_rate": 0.09,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0326,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "params": {
                "expected_minutes": 26.01,
                "projection_minutes": 15.08,
                "minutes_scale": 1.5,
                "appearance_probability": 0.591
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0915,
                "goals": 0.09,
                "goal_rate": 0.09,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0326,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9894,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.591
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0326,
                  "after": 0.0389
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 18 by projected rating, fifa_overall 71.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9894,
                "creation_factor": 0.8,
                "fifa_overall": 71.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": 4480,
                "fifa_rank": 4913.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0535,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9894,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0535,
                "scorer_weight": 0.0555,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0517,
                "finishing_factor": 0.9894,
                "appearance_weight": 0.591,
                "weight_rank": 8,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0535,
                "projected_assists": 0,
                "assist_probability": 0.0225,
                "finishing_factor": 0.9894,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0225,
                "provider_weight": 0.0184,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0258,
                "creation_factor": 0.8,
                "appearance_weight": 0.591,
                "weight_rank": 9,
                "eligible_players": 14
              }
            }
          ]
        },
        "Joe Gelhardt": {
          "player_id": 945806,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 179,
          "market_value": 15000000,
          "stats": {
            "expected_goals": 0.1617,
            "goal_rate": 0.1182,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0714,
            "key_pass": 1,
            "rating": 6.7698,
            "minutes": 26,
            "total_pass": 13,
            "accurate_pass": 9,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 8.7773,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 4,
            "won_contest": 4,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 12,
            "total_progression": 34,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.584,
            "bench_expected_minutes": 25.85,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0872,
            "projected_assists": 0,
            "assist_probability": 0.0402,
            "finishing_factor": 0.8165,
            "creation_factor": 0.8,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 14,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0978,
                "expected_assists": 0.0167,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3717,
            "combined_rank_score": 1690.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3268.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7698,
            "source_file": "data/player_rankings.csv",
            "player_name": "Joe Gelhardt",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Orri Óskarsson",
                  "ranking": 3712
                },
                {
                  "player_name": "Santiago Núñez",
                  "ranking": 3713
                },
                {
                  "player_name": "Viktor Johansson",
                  "ranking": 3714
                },
                {
                  "player_name": "Isaac Romero",
                  "ranking": 3715
                },
                {
                  "player_name": "Roman Yaremchuk",
                  "ranking": 3716
                }
              ],
              "lower": [
                {
                  "player_name": "Liam Kitching",
                  "ranking": 3718
                },
                {
                  "player_name": "Andreas Tetteh",
                  "ranking": 3719
                },
                {
                  "player_name": "Kiril Despodov",
                  "ranking": 3720
                },
                {
                  "player_name": "Lamare Bogarde",
                  "ranking": 3721
                },
                {
                  "player_name": "Darius Olaru",
                  "ranking": 3722
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1,
          "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": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.853547648734555,
            "bench_appearance_prob": 0.5842521658515707,
            "market_value_adjustment": 1.0185,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (1 historical appearances) to 25.9 expected mins (appearance prob 0.58)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1066,
                "goals": 0.0808,
                "goal_rate": 0.0808,
                "shots_on_target": 0.3284,
                "total_shots": 0.9492,
                "expected_assists": 0.0409,
                "key_pass": 0.4901,
                "rating": 6.7698,
                "minutes": 18.0,
                "total_pass": 9.0,
                "accurate_pass": 6.0,
                "duels_won": 3.0,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0,
                "accurate_opp_half_passes": 6.0,
                "crosses_total": 1.0,
                "crosses_accurate": 0.0,
                "touches": 19.0,
                "possession_lost": 6.0,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 3.0,
                "won_contest": 3.0,
                "ball_recovery": 1.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 8.0,
                "total_progression": 23.0433,
                "progressive_carries": 1.0,
                "shots_off_target": 0.6208
              },
              "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": "Newcastle United",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 1.0,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0978,
                  "totalOppositionHalfPasses": 8.0,
                  "accurateOppositionHalfPasses": 6.0,
                  "accuratePass": 6.0,
                  "totalShots": 3.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10657969117164612,
                    "model_output": 0.1066,
                    "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.0753
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0313
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0169
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0142
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.036,
                      "total": 0.1066,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.475603
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.225636
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.115709
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.097648
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.065704
                        }
                      ],
                      "others_margin": -0.29045
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.080827496945858,
                    "model_output": 0.0808,
                    "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.0853
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0224
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.022
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0147
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0085
                        }
                      ],
                      "others": -0.0148,
                      "total": 0.0808,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.542816
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.173381
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.17029
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.132205
                        },
                        {
                          "name": "goals",
                          "margin": -0.085584
                        }
                      ],
                      "others_margin": -0.167061
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.32842838764190674,
                    "model_output": 0.3284,
                    "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.213
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.066
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0303
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0296
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0291
                        }
                      ],
                      "others": -0.0318,
                      "total": 0.3284,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.505194
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.185504
                        },
                        {
                          "name": "goals",
                          "margin": -0.080892
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.079064
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.077676
                        }
                      ],
                      "others_margin": -0.092447
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9492202401161194,
                    "model_output": 0.9492,
                    "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.7304
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1823
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1605
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.1429
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.1326
                        }
                      ],
                      "others": 0.0472,
                      "total": 0.9492,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.730362
                        },
                        {
                          "name": "goals",
                          "margin": -0.182316
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.160469
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.142943
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.132609
                        }
                      ],
                      "others_margin": 0.04717
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04092031717300415,
                    "model_output": 0.0409,
                    "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.0226
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0043
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0034
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0023
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0024
                        }
                      ],
                      "others": 0.0022,
                      "total": 0.0409,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.433833
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.107797
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.096127
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.065769
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.064793
                        }
                      ],
                      "others_margin": 0.055519
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.4900667667388916,
                    "model_output": 0.4901,
                    "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.2992
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0429
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0427
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0303
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0258
                        }
                      ],
                      "others": 0.0342,
                      "total": 0.4901,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.586741
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.108471
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.097311
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.068068
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.058216
                        }
                      ],
                      "others_margin": 0.072156
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.769763946533203,
                    "model_output": 6.7698,
                    "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.1208
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0898
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0267
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0183
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0169
                        }
                      ],
                      "others": -0.0149,
                      "total": 6.7698,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": 0.120799
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.089834
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.026677
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.018331
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.016851
                        }
                      ],
                      "others_margin": -0.014856
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 1,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0185, quality 0.579)",
              "stats": {
                "expected_goals": 0.1086,
                "goals": 0.0823,
                "goal_rate": 0.0823,
                "shots_on_target": 0.3345,
                "total_shots": 0.9668,
                "expected_assists": 0.0417,
                "key_pass": 0.4991,
                "rating": 6.7698,
                "minutes": 18.0,
                "total_pass": 9.1665,
                "accurate_pass": 6.111,
                "duels_won": 3.0555,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.148,
                "accurate_opp_half_passes": 6.111,
                "crosses_total": 1.0185,
                "crosses_accurate": 0.0,
                "touches": 19.3515,
                "possession_lost": 6.111,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 3.0555,
                "won_contest": 3.0555,
                "ball_recovery": 1.0185,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 8.148,
                "total_progression": 23.4696,
                "progressive_carries": 1.0185,
                "shots_off_target": 0.6323
              },
              "params": {
                "market_value_eur": 15000000,
                "quality_factor": 0.5792,
                "boost_factor": 1.0185,
                "reference_quality": 0.505,
                "history_matches": 1,
                "history_shrink": 0.8333,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.0 to 25.9 expected minutes (appearance prob 0.58)",
              "stats": {
                "expected_goals": 0.156,
                "goals": 0.1182,
                "goal_rate": 0.1182,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0599,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85
              },
              "params": {
                "expected_minutes": 25.85,
                "projection_minutes": 18.0,
                "minutes_scale": 1.4363,
                "appearance_probability": 0.584
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.156,
                "goals": 0.1182,
                "goal_rate": 0.1182,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0599,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.8165,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.584
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.156,
                  "after": 0.1617
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0599,
                  "after": 0.0714
                }
              ]
            },
            {
              "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.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.8165,
                "creation_factor": 0.8,
                "fifa_overall": 73.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": 3717,
                "fifa_rank": 3268.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0872,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8165,
                "creation_factor": 0.8,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0872,
                "scorer_weight": 0.0771,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0718,
                "finishing_factor": 0.8165,
                "appearance_weight": 0.584,
                "weight_rank": 5,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0872,
                "projected_assists": 0,
                "assist_probability": 0.0402,
                "finishing_factor": 0.8165,
                "creation_factor": 0.8,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0402,
                "provider_weight": 0.0334,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0468,
                "creation_factor": 0.8,
                "appearance_weight": 0.584,
                "weight_rank": 7,
                "eligible_players": 14
              }
            }
          ]
        }
      },
      "substitutes": {
        "Lucas Herrington": {
          "player_id": 1646783,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 193,
          "market_value": 8800000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.6178,
            "minutes": 23,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.0291,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 1,
            "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.0,
            "expected_assists": 0.0055,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.608,
            "bench_expected_minutes": 22.73,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0033,
            "finishing_factor": 1.0,
            "creation_factor": 0.9158,
            "fifa_overall": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0233,
                "expected_assists": 0.0259,
                "total_shots": 1,
                "total_pass": 51,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 31,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0145,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "interceptions": 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": 16363262,
              "match_date": "2026-09-05",
              "home_team": "Hull City",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Coventry City",
              "stats": {
                "minutes": 31,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "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": 16363634,
              "match_date": "2026-08-22",
              "home_team": "Hull City",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 26,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 7040,
            "combined_rank_score": 5366.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 261.0,
            "sofascore_rating": 7.0909,
            "sofascore_appearances": 11.0,
            "fifa_rank": 10471.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6178,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Herrington",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas Pratto",
                  "ranking": 7035
                },
                {
                  "player_name": "Pedro Bicalho",
                  "ranking": 7036
                },
                {
                  "player_name": "Léo Vieira",
                  "ranking": 7037
                },
                {
                  "player_name": "Peter Žulj",
                  "ranking": 7038
                },
                {
                  "player_name": "Caju",
                  "ranking": 7039
                }
              ],
              "lower": [
                {
                  "player_name": "Bernard Tekpetey",
                  "ranking": 7041
                },
                {
                  "player_name": "Jhojan Torres",
                  "ranking": 7042
                },
                {
                  "player_name": "Olivier Verdon",
                  "ranking": 7043
                },
                {
                  "player_name": "Alan Soñora",
                  "ranking": 7044
                },
                {
                  "player_name": "Diego Coelho",
                  "ranking": 7045
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.57,
          "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.57,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.73,
            "bench_appearance_prob": 0.608,
            "market_value_adjustment": 1.0005,
            "fbref_prior_metrics": {
              "squad": "Hull City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 30.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0467
            },
            "rationale": "Bench projection scaled from XGBoost D_service (5 historical appearances) to 22.7 expected mins (appearance prob 0.61); FBref playing time empirical prior: 2.0 sub appearances, 30.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3165,
                "tackles": 0.49,
                "tackles_won": 0.3478,
                "clearances": 0.9523,
                "aerial_won": 0.5141,
                "total_shots": 0.1272,
                "rating": 6.6178,
                "minutes": 23.89,
                "total_pass": 7.6311,
                "accurate_pass": 6.55,
                "duels_won": 0.8449,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.442,
                "accurate_own_half_passes": 4.442,
                "total_opp_half_passes": 3.1891,
                "accurate_opp_half_passes": 2.108,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.442,
                "possession_lost": 1.0811,
                "dispossessed": 0.0,
                "duels_lost": 0.8473,
                "aerial_lost": 0.5806,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2667,
                "challenges_lost": 0.0,
                "fouls": 0.2667,
                "fouls_drawn": 0.0,
                "blocks": 0.2667,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8073,
                "total_progression": 3.0346,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1272
              },
              "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": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Aston Villa",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Coventry City",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Manchester United",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.0768,
                  "aerialWon": 0.9615,
                  "totalClearance_p90": 3.7779,
                  "totalTackle": 0.4645,
                  "totalPass": 19.3251
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.31649088859558105,
                    "model_output": 0.3165,
                    "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.4563
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0379
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0127
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0101
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0159,
                      "total": 0.3165,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.759749
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.099217
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.035506
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.029261
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.023528
                        }
                      ],
                      "others_margin": -0.0492
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.48998621106147766,
                    "model_output": 0.49,
                    "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.753
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0441
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0195
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.018
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0166
                        }
                      ],
                      "others": -0.0527,
                      "total": 0.49,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.777001
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.071298
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.033185
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.031681
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.030193
                        }
                      ],
                      "others_margin": -0.10211
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.34775567054748535,
                    "model_output": 0.3478,
                    "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.4415
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0211
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0145
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0128
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0093
                        }
                      ],
                      "others": -0.0364,
                      "total": 0.3478,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.727225
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.052387
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.036346
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.031911
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.023817
                        }
                      ],
                      "others_margin": -0.099847
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.952296793460846,
                    "model_output": 0.9523,
                    "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.2183
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.1872
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1333
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0453
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0466
                        }
                      ],
                      "others": -0.0522,
                      "total": 0.9523,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.029228
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.164666
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.136317
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.048464
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.047503
                        }
                      ],
                      "others_margin": -0.053418
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5141190886497498,
                    "model_output": 0.5141,
                    "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.8236
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0995
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0428
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0309
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0179
                        }
                      ],
                      "others": 0.0492,
                      "total": 0.5141,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.906093
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.196306
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.097834
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.071583
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.039367
                        }
                      ],
                      "others_margin": 0.100429
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.127165287733078,
                    "model_output": 0.1272,
                    "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.2053
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0579
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0163
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0126
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0117
                        }
                      ],
                      "others": -0.0653,
                      "total": 0.1272,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.205287
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.057931
                        },
                        {
                          "name": "rating",
                          "margin": -0.016283
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.012561
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.011728
                        }
                      ],
                      "others_margin": -0.065299
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6177544593811035,
                    "model_output": 6.6178,
                    "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.0339
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0229
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0201
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0155
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.015
                        }
                      ],
                      "others": -0.0599,
                      "total": 6.6178,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.033927
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.022856
                        },
                        {
                          "name": "rating",
                          "margin": -0.020114
                        },
                        {
                          "name": "touches",
                          "margin": -0.015539
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.01497
                        }
                      ],
                      "others_margin": -0.059972
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0005, quality 0.508)",
              "stats": {
                "interceptions": 0.3166,
                "tackles": 0.4902,
                "tackles_won": 0.3479,
                "clearances": 0.9528,
                "aerial_won": 0.5144,
                "total_shots": 0.1273,
                "rating": 6.6178,
                "minutes": 23.89,
                "total_pass": 7.6349,
                "accurate_pass": 6.5533,
                "duels_won": 0.8453,
                "total_long_balls": 0.2268,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4442,
                "accurate_own_half_passes": 4.4442,
                "total_opp_half_passes": 3.1907,
                "accurate_opp_half_passes": 2.1091,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.4472,
                "possession_lost": 1.0816,
                "dispossessed": 0.0,
                "duels_lost": 0.8477,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2668,
                "challenges_lost": 0.0,
                "fouls": 0.2668,
                "fouls_drawn": 0.0,
                "blocks": 0.2668,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8082,
                "total_progression": 3.0361,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1273
              },
              "params": {
                "market_value_eur": 8800000,
                "quality_factor": 0.5083,
                "boost_factor": 1.0005,
                "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.0152)",
              "stats": {
                "interceptions": 0.3118,
                "tackles": 0.4902,
                "tackles_won": 0.3426,
                "clearances": 0.9528,
                "aerial_won": 0.5144,
                "total_shots": 0.1254,
                "rating": 6.6178,
                "minutes": 23.89,
                "total_pass": 7.6349,
                "accurate_pass": 6.5533,
                "duels_won": 0.8453,
                "total_long_balls": 0.2268,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.4442,
                "accurate_own_half_passes": 4.4442,
                "total_opp_half_passes": 3.1907,
                "accurate_opp_half_passes": 2.1091,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.4472,
                "possession_lost": 1.0816,
                "dispossessed": 0.0,
                "duels_lost": 0.8477,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2668,
                "challenges_lost": 0.0,
                "fouls": 0.2628,
                "fouls_drawn": 0.0,
                "blocks": 0.2668,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0048,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8082,
                "total_progression": 3.0361,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1273
              },
              "params": {
                "blend_weight": 0.0152,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2654,
                "prior_reliability": 0.0467,
                "competition": "Premier League",
                "squad": "Hull City"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.3479,
                  "after": 0.3426
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.9 to 22.7 expected minutes (appearance prob 0.61)",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0046,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73
              },
              "params": {
                "expected_minutes": 22.73,
                "projection_minutes": 23.89,
                "minutes_scale": 0.9514,
                "appearance_probability": 0.608
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0046,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.0,
                "creation_factor": 0.9158
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.608
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 16 by projected rating, fifa_overall 66.0; not used by the projection)",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.0,
                "creation_factor": 0.9158,
                "fifa_overall": 66.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": 7040,
                "fifa_rank": 10471.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 66.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.0,
                "creation_factor": 0.9158,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0009,
                "finishing_factor": 1.0,
                "appearance_weight": 0.608,
                "weight_rank": 14,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.2967,
                "tackles": 0.4664,
                "tackles_won": 0.326,
                "clearances": 0.9065,
                "aerial_won": 0.4894,
                "total_shots": 0.1211,
                "rating": 6.6178,
                "minutes": 22.73,
                "total_pass": 7.2642,
                "accurate_pass": 6.2351,
                "duels_won": 0.8043,
                "total_long_balls": 0.2158,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 4.2284,
                "accurate_own_half_passes": 4.2284,
                "total_opp_half_passes": 3.0358,
                "accurate_opp_half_passes": 2.0067,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 9.9399,
                "possession_lost": 1.0291,
                "dispossessed": 0.0,
                "duels_lost": 0.8065,
                "aerial_lost": 0.5809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2538,
                "challenges_lost": 0.0,
                "fouls": 0.25,
                "fouls_drawn": 0.0,
                "blocks": 0.2538,
                "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": 1.7204,
                "total_progression": 2.8887,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1211,
                "bench_appearance_probability": 0.608,
                "bench_expected_minutes": 22.73,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0033,
                "finishing_factor": 1.0,
                "creation_factor": 0.9158,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0033,
                "provider_weight": 0.0031,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0043,
                "creation_factor": 0.9158,
                "appearance_weight": 0.608,
                "weight_rank": 13,
                "eligible_players": 14
              }
            }
          ]
        },
        "Robinio Vaz": {
          "player_id": 1514800,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 47,
          "height": 185,
          "market_value": 18700000,
          "stats": {
            "expected_goals": 0.0949,
            "goal_rate": 0.09,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0389,
            "key_pass": 1,
            "rating": 6.5772,
            "minutes": 26,
            "total_pass": 8,
            "accurate_pass": 6,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 16,
            "possession_lost": 6.2698,
            "dispossessed": 0.9411,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 8,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.591,
            "bench_expected_minutes": 26.01,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0535,
            "projected_assists": 0,
            "assist_probability": 0.0225,
            "finishing_factor": 0.9894,
            "creation_factor": 0.8,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363641,
              "match_date": "2026-09-12",
              "home_team": "Chelsea",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 4480,
            "combined_rank_score": 2500.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4913.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5772,
            "source_file": "data/player_rankings.csv",
            "player_name": "Robinio Vaz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Christopher Bonsu Baah",
                  "ranking": 4475
                },
                {
                  "player_name": "Valentin Atangana",
                  "ranking": 4476
                },
                {
                  "player_name": "Alex Luna",
                  "ranking": 4477
                },
                {
                  "player_name": "Matt Crooks",
                  "ranking": 4478
                },
                {
                  "player_name": "Lautaro Rivero",
                  "ranking": 4479
                }
              ],
              "lower": [
                {
                  "player_name": "Franco Vázquez",
                  "ranking": 4481
                },
                {
                  "player_name": "Fraser Forster",
                  "ranking": 4482
                },
                {
                  "player_name": "Rodrigo Rey",
                  "ranking": 4483
                },
                {
                  "player_name": "Conan Ledesma",
                  "ranking": 4484
                },
                {
                  "player_name": "Rafael Santos Borré",
                  "ranking": 4485
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2,
          "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": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.007630757726062,
            "bench_appearance_prob": 0.5912559435330029,
            "market_value_adjustment": 1.0242,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 26.0 expected mins (appearance prob 0.59)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0596,
                "goals": 0.0586,
                "goal_rate": 0.0586,
                "shots_on_target": 0.2047,
                "total_shots": 0.5606,
                "expected_assists": 0.0211,
                "key_pass": 0.3856,
                "rating": 6.5772,
                "minutes": 15.08,
                "total_pass": 5.2432,
                "accurate_pass": 4.1621,
                "duels_won": 1.0,
                "total_long_balls": 0.5405,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2432,
                "accurate_opp_half_passes": 4.1621,
                "crosses_total": 0.5405,
                "crosses_accurate": 0.0,
                "touches": 10.2432,
                "possession_lost": 4.0811,
                "dispossessed": 0.9189,
                "duels_lost": 1.9189,
                "aerial_lost": 0.5405,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.0,
                "challenges_lost": 0.0,
                "fouls": 0.4595,
                "fouls_drawn": 1.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.0811,
                "total_progression": 4.9128,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3559
              },
              "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": "Newcastle United",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0,
                  "totalOppositionHalfPasses": 5.2432,
                  "accurateOppositionHalfPasses": 4.1622,
                  "accuratePass": 4.1622,
                  "totalShots": 0.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05958842858672142,
                    "model_output": 0.0596,
                    "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.0877
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0208
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0072
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0062
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0139,
                      "total": 0.0596,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.58138
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.206884
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.083358
                        },
                        {
                          "name": "goals",
                          "margin": -0.077862
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.048051
                        }
                      ],
                      "others_margin": -0.20808
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05855240300297737,
                    "model_output": 0.0586,
                    "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.0691
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0244
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0101
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.009
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0246,
                      "total": 0.0586,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.414414
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.200341
                        },
                        {
                          "name": "goals",
                          "margin": -0.096442
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.094331
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.090336
                        }
                      ],
                      "others_margin": -0.351104
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20470105111598969,
                    "model_output": 0.2047,
                    "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.2134
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0197
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0184
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0169
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0142
                        }
                      ],
                      "others": -0.0497,
                      "total": 0.2047,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.506522
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.062766
                        },
                        {
                          "name": "goals",
                          "margin": -0.062456
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.060985
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.054171
                        }
                      ],
                      "others_margin": -0.217509
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5606281757354736,
                    "model_output": 0.5606,
                    "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.4749
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1189
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0479
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0305
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0249
                        }
                      ],
                      "others": -0.121,
                      "total": 0.5606,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.474942
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.118887
                        },
                        {
                          "name": "goals",
                          "margin": -0.047938
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.030465
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.024877
                        }
                      ],
                      "others_margin": -0.120967
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02114751935005188,
                    "model_output": 0.0211,
                    "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.0204
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0114
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0039
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0023
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0078,
                      "total": 0.0211,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.381775
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.301206
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.128172
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.078364
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.066344
                        }
                      ],
                      "others_margin": -0.312645
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3856106102466583,
                    "model_output": 0.3856,
                    "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.2583
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0498
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.03
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0256
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0244
                        }
                      ],
                      "others": -0.0487,
                      "total": 0.3856,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.483389
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.113207
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.066685
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.060504
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.057756
                        }
                      ],
                      "others_margin": -0.118753
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.577193260192871,
                    "model_output": 6.5772,
                    "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.0455
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0185
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0138
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0771,
                      "total": 6.5772,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.045548
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.018498
                        },
                        {
                          "name": "rating",
                          "margin": -0.017091
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013842
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.013028
                        }
                      ],
                      "others_margin": -0.076961
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 2,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0242, quality 0.618)",
              "stats": {
                "expected_goals": 0.061,
                "goals": 0.06,
                "goal_rate": 0.06,
                "shots_on_target": 0.2097,
                "total_shots": 0.5742,
                "expected_assists": 0.0217,
                "key_pass": 0.3949,
                "rating": 6.5772,
                "minutes": 15.08,
                "total_pass": 5.3701,
                "accurate_pass": 4.2628,
                "duels_won": 1.0242,
                "total_long_balls": 0.5536,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.3701,
                "accurate_opp_half_passes": 4.2628,
                "crosses_total": 0.5536,
                "crosses_accurate": 0.0,
                "touches": 10.4911,
                "possession_lost": 4.1799,
                "dispossessed": 0.9411,
                "duels_lost": 1.9653,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.0242,
                "challenges_lost": 0.0,
                "fouls": 0.4706,
                "fouls_drawn": 1.0242,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.1073,
                "total_progression": 5.0317,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3645
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.0242,
                "reference_quality": 0.505,
                "history_matches": 2,
                "history_shrink": 0.7143,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 15.1 to 26.0 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0915,
                "goals": 0.09,
                "goal_rate": 0.09,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0326,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "params": {
                "expected_minutes": 26.01,
                "projection_minutes": 15.08,
                "minutes_scale": 1.5,
                "appearance_probability": 0.591
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0915,
                "goals": 0.09,
                "goal_rate": 0.09,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0326,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9894,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.591
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0326,
                  "after": 0.0389
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 18 by projected rating, fifa_overall 71.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9894,
                "creation_factor": 0.8,
                "fifa_overall": 71.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": 4480,
                "fifa_rank": 4913.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0535,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9894,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0535,
                "scorer_weight": 0.0555,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0517,
                "finishing_factor": 0.9894,
                "appearance_weight": 0.591,
                "weight_rank": 8,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0949,
                "goal_rate": 0.09,
                "goals": 0,
                "shots_on_target": 0.3145,
                "total_shots": 0.8613,
                "expected_assists": 0.0389,
                "key_pass": 0.5923,
                "rating": 6.5772,
                "minutes": 26.01,
                "total_pass": 8.0551,
                "accurate_pass": 6.3942,
                "duels_won": 1.5363,
                "total_long_balls": 0.8304,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0551,
                "accurate_opp_half_passes": 6.3942,
                "crosses_total": 0.8304,
                "crosses_accurate": 0.0,
                "touches": 15.7366,
                "possession_lost": 6.2698,
                "dispossessed": 0.9411,
                "duels_lost": 2.948,
                "aerial_lost": 0.5536,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.5363,
                "challenges_lost": 0.0,
                "fouls": 0.7059,
                "fouls_drawn": 1.5363,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6609,
                "total_progression": 7.5475,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5467,
                "bench_appearance_probability": 0.591,
                "bench_expected_minutes": 26.01,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0535,
                "projected_assists": 0,
                "assist_probability": 0.0225,
                "finishing_factor": 0.9894,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0225,
                "provider_weight": 0.0184,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0258,
                "creation_factor": 0.8,
                "appearance_weight": 0.591,
                "weight_rank": 9,
                "eligible_players": 14
              }
            }
          ]
        },
        "Joe Gelhardt": {
          "player_id": 945806,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 179,
          "market_value": 15000000,
          "stats": {
            "expected_goals": 0.1617,
            "goal_rate": 0.1182,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0714,
            "key_pass": 1,
            "rating": 6.7698,
            "minutes": 26,
            "total_pass": 13,
            "accurate_pass": 9,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 8.7773,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 4,
            "won_contest": 4,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 12,
            "total_progression": 34,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.584,
            "bench_expected_minutes": 25.85,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0872,
            "projected_assists": 0,
            "assist_probability": 0.0402,
            "finishing_factor": 0.8165,
            "creation_factor": 0.8,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363868,
              "match_date": "2026-09-19",
              "home_team": "Newcastle United",
              "away_team": "Hull City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Hull City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 14,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0978,
                "expected_assists": 0.0167,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3717,
            "combined_rank_score": 1690.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3268.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7698,
            "source_file": "data/player_rankings.csv",
            "player_name": "Joe Gelhardt",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Orri Óskarsson",
                  "ranking": 3712
                },
                {
                  "player_name": "Santiago Núñez",
                  "ranking": 3713
                },
                {
                  "player_name": "Viktor Johansson",
                  "ranking": 3714
                },
                {
                  "player_name": "Isaac Romero",
                  "ranking": 3715
                },
                {
                  "player_name": "Roman Yaremchuk",
                  "ranking": 3716
                }
              ],
              "lower": [
                {
                  "player_name": "Liam Kitching",
                  "ranking": 3718
                },
                {
                  "player_name": "Andreas Tetteh",
                  "ranking": 3719
                },
                {
                  "player_name": "Kiril Despodov",
                  "ranking": 3720
                },
                {
                  "player_name": "Lamare Bogarde",
                  "ranking": 3721
                },
                {
                  "player_name": "Darius Olaru",
                  "ranking": 3722
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1,
          "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": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.853547648734555,
            "bench_appearance_prob": 0.5842521658515707,
            "market_value_adjustment": 1.0185,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (1 historical appearances) to 25.9 expected mins (appearance prob 0.58)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1066,
                "goals": 0.0808,
                "goal_rate": 0.0808,
                "shots_on_target": 0.3284,
                "total_shots": 0.9492,
                "expected_assists": 0.0409,
                "key_pass": 0.4901,
                "rating": 6.7698,
                "minutes": 18.0,
                "total_pass": 9.0,
                "accurate_pass": 6.0,
                "duels_won": 3.0,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.0,
                "accurate_opp_half_passes": 6.0,
                "crosses_total": 1.0,
                "crosses_accurate": 0.0,
                "touches": 19.0,
                "possession_lost": 6.0,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 3.0,
                "won_contest": 3.0,
                "ball_recovery": 1.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 8.0,
                "total_progression": 23.0433,
                "progressive_carries": 1.0,
                "shots_off_target": 0.6208
              },
              "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": "Newcastle United",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 1.0,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0978,
                  "totalOppositionHalfPasses": 8.0,
                  "accurateOppositionHalfPasses": 6.0,
                  "accuratePass": 6.0,
                  "totalShots": 3.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10657969117164612,
                    "model_output": 0.1066,
                    "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.0753
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0313
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0169
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0142
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.036,
                      "total": 0.1066,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.475603
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.225636
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.115709
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.097648
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.065704
                        }
                      ],
                      "others_margin": -0.29045
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.080827496945858,
                    "model_output": 0.0808,
                    "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.0853
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0224
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.022
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0147
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0085
                        }
                      ],
                      "others": -0.0148,
                      "total": 0.0808,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.542816
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.173381
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.17029
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.132205
                        },
                        {
                          "name": "goals",
                          "margin": -0.085584
                        }
                      ],
                      "others_margin": -0.167061
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.32842838764190674,
                    "model_output": 0.3284,
                    "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.213
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.066
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0303
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0296
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0291
                        }
                      ],
                      "others": -0.0318,
                      "total": 0.3284,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.505194
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.185504
                        },
                        {
                          "name": "goals",
                          "margin": -0.080892
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.079064
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.077676
                        }
                      ],
                      "others_margin": -0.092447
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9492202401161194,
                    "model_output": 0.9492,
                    "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.7304
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1823
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1605
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.1429
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.1326
                        }
                      ],
                      "others": 0.0472,
                      "total": 0.9492,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.730362
                        },
                        {
                          "name": "goals",
                          "margin": -0.182316
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.160469
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.142943
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.132609
                        }
                      ],
                      "others_margin": 0.04717
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04092031717300415,
                    "model_output": 0.0409,
                    "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.0226
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0043
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0034
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0023
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0024
                        }
                      ],
                      "others": 0.0022,
                      "total": 0.0409,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.433833
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.107797
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.096127
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.065769
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.064793
                        }
                      ],
                      "others_margin": 0.055519
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.4900667667388916,
                    "model_output": 0.4901,
                    "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.2992
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0429
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0427
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0303
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0258
                        }
                      ],
                      "others": 0.0342,
                      "total": 0.4901,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.586741
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.108471
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.097311
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.068068
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.058216
                        }
                      ],
                      "others_margin": 0.072156
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.769763946533203,
                    "model_output": 6.7698,
                    "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.1208
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0898
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0267
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0183
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0169
                        }
                      ],
                      "others": -0.0149,
                      "total": 6.7698,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": 0.120799
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.089834
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.026677
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.018331
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.016851
                        }
                      ],
                      "others_margin": -0.014856
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 1,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0185, quality 0.579)",
              "stats": {
                "expected_goals": 0.1086,
                "goals": 0.0823,
                "goal_rate": 0.0823,
                "shots_on_target": 0.3345,
                "total_shots": 0.9668,
                "expected_assists": 0.0417,
                "key_pass": 0.4991,
                "rating": 6.7698,
                "minutes": 18.0,
                "total_pass": 9.1665,
                "accurate_pass": 6.111,
                "duels_won": 3.0555,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 8.148,
                "accurate_opp_half_passes": 6.111,
                "crosses_total": 1.0185,
                "crosses_accurate": 0.0,
                "touches": 19.3515,
                "possession_lost": 6.111,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 3.0555,
                "won_contest": 3.0555,
                "ball_recovery": 1.0185,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 8.148,
                "total_progression": 23.4696,
                "progressive_carries": 1.0185,
                "shots_off_target": 0.6323
              },
              "params": {
                "market_value_eur": 15000000,
                "quality_factor": 0.5792,
                "boost_factor": 1.0185,
                "reference_quality": 0.505,
                "history_matches": 1,
                "history_shrink": 0.8333,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.0 to 25.9 expected minutes (appearance prob 0.58)",
              "stats": {
                "expected_goals": 0.156,
                "goals": 0.1182,
                "goal_rate": 0.1182,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0599,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85
              },
              "params": {
                "expected_minutes": 25.85,
                "projection_minutes": 18.0,
                "minutes_scale": 1.4363,
                "appearance_probability": 0.584
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.156,
                "goals": 0.1182,
                "goal_rate": 0.1182,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0599,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.8165,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.584
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.156,
                  "after": 0.1617
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0599,
                  "after": 0.0714
                }
              ]
            },
            {
              "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.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.8165,
                "creation_factor": 0.8,
                "fifa_overall": 73.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": 3717,
                "fifa_rank": 3268.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0872,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8165,
                "creation_factor": 0.8,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0872,
                "scorer_weight": 0.0771,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0718,
                "finishing_factor": 0.8165,
                "appearance_weight": 0.584,
                "weight_rank": 5,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1617,
                "goal_rate": 0.1182,
                "goals": 0,
                "shots_on_target": 0.4804,
                "total_shots": 1.3886,
                "expected_assists": 0.0714,
                "key_pass": 0.7169,
                "rating": 6.7698,
                "minutes": 25.85,
                "total_pass": 13.1659,
                "accurate_pass": 8.7773,
                "duels_won": 4.3886,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 11.703,
                "accurate_opp_half_passes": 8.7773,
                "crosses_total": 1.4629,
                "crosses_accurate": 0.0,
                "touches": 27.7947,
                "possession_lost": 8.7773,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 4.3886,
                "won_contest": 4.3886,
                "ball_recovery": 1.4629,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 11.703,
                "total_progression": 33.7096,
                "progressive_carries": 1.4629,
                "shots_off_target": 0.9082,
                "bench_appearance_probability": 0.584,
                "bench_expected_minutes": 25.85,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0872,
                "projected_assists": 0,
                "assist_probability": 0.0402,
                "finishing_factor": 0.8165,
                "creation_factor": 0.8,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0402,
                "provider_weight": 0.0334,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0468,
                "creation_factor": 0.8,
                "appearance_weight": 0.584,
                "weight_rank": 7,
                "eligible_players": 14
              }
            }
          ]
        },
        "Christos Mouzakitis": {
          "player_id": 1416540,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 178,
          "market_value": 26000000,
          "stats": {
            "key_pass": 1,
            "assist_rate": 0.0408,
            "assists": 0,
            "expected_assists": 0.0551,
            "expected_goals": 0.0307,
            "total_shots": 0,
            "total_pass": 15,
            "accurate_pass": 12,
            "ball_recovery": 2,
            "duels_won": 2,
            "rating": 7.2,
            "minutes": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 2.4996,
            "dispossessed": 0.9,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.023,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0209,
            "ball_carries": 9,
            "total_progression": 24,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.543,
            "bench_expected_minutes": 22.96,
            "projected_substitution_order": 4,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 4,
            "projected_substitution_expected_count": 2.857,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0164,
            "projected_assists": 0,
            "assist_probability": 0.0291,
            "finishing_factor": 0.9171,
            "creation_factor": 0.9439,
            "fifa_overall": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4143,
            "combined_rank_score": 2149.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 745.0,
            "sofascore_rating": 6.6667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 3554.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Christos Mouzakitis",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nicolás Valentini",
                  "ranking": 4138
                },
                {
                  "player_name": "Borna Sosa",
                  "ranking": 4139
                },
                {
                  "player_name": "Nathan Broadhead",
                  "ranking": 4140
                },
                {
                  "player_name": "Fábio Cardoso",
                  "ranking": 4141
                },
                {
                  "player_name": "Jorge Sánchez",
                  "ranking": 4142
                }
              ],
              "lower": [
                {
                  "player_name": "Sammie Szmodics",
                  "ranking": 4144
                },
                {
                  "player_name": "Mathias Honsak",
                  "ranking": 4145
                },
                {
                  "player_name": "Dan Neil",
                  "ranking": 4146
                },
                {
                  "player_name": "Juan Cruz",
                  "ranking": 4147
                },
                {
                  "player_name": "Lukas Petkov",
                  "ranking": 4148
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "M_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 22.95590653284853,
            "bench_appearance_prob": 0.5434502969476606,
            "market_value_adjustment": 0.6858,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€26,000,000) scaled to 23.0 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position M (quality 0.69)",
              "stats": {
                "key_pass": 2.2,
                "assists": 0.16,
                "assist_rate": 0.16,
                "expected_assists": 0.181,
                "expected_goals": 0.116,
                "total_shots": 1.7,
                "total_pass": 60.0,
                "accurate_pass": 49.0,
                "ball_recovery": 6.3,
                "duels_won": 7.3,
                "rating": 7.2,
                "minutes": 90.0,
                "total_long_balls": 5.0,
                "accurate_long_balls": 3.0,
                "total_own_half_passes": 24.0,
                "accurate_own_half_passes": 19.0,
                "total_opp_half_passes": 24.0,
                "accurate_opp_half_passes": 18.0,
                "crosses_total": 1.7,
                "crosses_accurate": 0.8,
                "touches": 74.0,
                "possession_lost": 9.8,
                "dispossessed": 0.9,
                "duels_lost": 4.9,
                "aerial_won": 1.5,
                "aerial_lost": 1.2,
                "interceptions": 1.3,
                "tackles_won": 1.7,
                "tackles": 2.3,
                "clearances": 1.0,
                "total_contest": 4.7,
                "won_contest": 2.7,
                "challenges_lost": 1.3,
                "fouls": 1.8,
                "fouls_drawn": 1.3,
                "goals": 0.09,
                "goal_rate": 0.09,
                "shots_on_target": 0.7,
                "shots_off_target": 0.6,
                "blocks": 0.4,
                "big_chances_created": 0.13,
                "big_chances_missed": 0.07,
                "xgot": 0.079,
                "ball_carries": 36.0,
                "total_progression": 95.0,
                "progressive_carries": 8.0
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 23.0 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.5611,
                "assists": 0.0408,
                "assist_rate": 0.0408,
                "expected_assists": 0.0462,
                "expected_goals": 0.0296,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goals": 0.023,
                "goal_rate": 0.023,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0202,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96
              },
              "params": {
                "expected_minutes": 22.96,
                "projection_minutes": 90.0,
                "minutes_scale": 0.2551,
                "appearance_probability": 0.543
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5611,
                "assists": 0.0408,
                "assist_rate": 0.0408,
                "expected_assists": 0.0462,
                "expected_goals": 0.0296,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goals": 0.023,
                "goal_rate": 0.023,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0202,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96
              },
              "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.02 (squad xG sum 0.9858, xG scale 1.0368, xA scale 1.1924, team xA 0.66 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9171,
                "creation_factor": 0.9439
              },
              "params": {
                "team_lambda": 1.022,
                "squad_xg_sum": 0.9858,
                "squad_xa_sum": 0.5571,
                "team_expected_assists": 0.6643,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0368,
                "xa_scale": 1.1924,
                "opponent_lambda": 1.693,
                "scoreline_reset": true,
                "appearance_weight": 0.543
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0462,
                  "after": 0.0551
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 1 by projected rating, fifa_overall 73.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "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.9171,
                "creation_factor": 0.9439,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4143,
                "fifa_rank": 3554.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0164,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9171,
                "creation_factor": 0.9439,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0164,
                "scorer_weight": 0.0153,
                "squad_weight_total": 1.0736,
                "weight_share": 0.0142,
                "finishing_factor": 0.9171,
                "appearance_weight": 0.543,
                "weight_rank": 11,
                "eligible_players": 14
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5611,
                "assist_rate": 0.0408,
                "assists": 0,
                "expected_assists": 0.0551,
                "expected_goals": 0.0307,
                "total_shots": 0.4336,
                "total_pass": 15.3039,
                "accurate_pass": 12.4982,
                "ball_recovery": 1.6069,
                "duels_won": 1.862,
                "rating": 7.2,
                "minutes": 22.96,
                "total_long_balls": 1.2753,
                "accurate_long_balls": 0.7652,
                "total_own_half_passes": 6.1216,
                "accurate_own_half_passes": 4.8462,
                "total_opp_half_passes": 6.1216,
                "accurate_opp_half_passes": 4.5912,
                "crosses_total": 0.4336,
                "crosses_accurate": 0.2041,
                "touches": 18.8749,
                "possession_lost": 2.4996,
                "dispossessed": 0.9,
                "duels_lost": 1.2498,
                "aerial_won": 0.3826,
                "aerial_lost": 1.2,
                "interceptions": 0.3316,
                "tackles_won": 0.4336,
                "tackles": 0.5867,
                "clearances": 0.2551,
                "total_contest": 1.1988,
                "won_contest": 0.6887,
                "challenges_lost": 1.3,
                "fouls": 0.4591,
                "fouls_drawn": 0.3316,
                "goal_rate": 0.023,
                "goals": 0,
                "shots_on_target": 0.1785,
                "shots_off_target": 0.153,
                "blocks": 0.102,
                "big_chances_created": 0.0332,
                "big_chances_missed": 0.0179,
                "xgot": 0.0209,
                "ball_carries": 9.1824,
                "total_progression": 24.2312,
                "progressive_carries": 2.0405,
                "bench_appearance_probability": 0.543,
                "bench_expected_minutes": 22.96,
                "projected_substitution_order": 4,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 4,
                "projected_substitution_expected_count": 2.857,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0164,
                "projected_assists": 0,
                "assist_probability": 0.0291,
                "finishing_factor": 0.9171,
                "creation_factor": 0.9439,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0291,
                "provider_weight": 0.0282,
                "squad_weight_total": 0.7134,
                "weight_share": 0.0396,
                "creation_factor": 0.9439,
                "appearance_weight": 0.543,
                "weight_rank": 8,
                "eligible_players": 14
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 0,
        "expected_goals": 1.02,
        "expected_assists": 0.66,
        "total_shots": 11,
        "shots_on_target": 2,
        "total_passes": 295,
        "interceptions": 8,
        "tackles": 15,
        "avg_rating": 6.79,
        "possession_estimated_pct": 46.4,
        "pressing_actions_per_90": 6.4
      }
    },
    "Everton": {
      "formation": "4-2-3-1",
      "players": {
        "Thierno Barry": {
          "player_id": 1395746,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 11,
          "height": 195,
          "market_value": 31000000,
          "stats": {
            "expected_goals": 0.5664,
            "goal_rate": 0.5782,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 3,
            "expected_assists": 0.0538,
            "key_pass": 1,
            "rating": 6.7731,
            "minutes": 83,
            "total_pass": 15,
            "accurate_pass": 10,
            "duels_won": 6,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 10.1542,
            "dispossessed": 0.8981,
            "duels_lost": 9,
            "aerial_lost": 6,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.5556,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 18,
            "progressive_carries": 1,
            "shots_off_target": 2,
            "duel_xg_multiplier": 1.1904,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.33,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Semi Ajayi, Nobel Mendy",
            "opponent_faced": "Semi Ajayi, Nobel Mendy",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.4324,
            "projected_assists": 0,
            "assist_probability": 0.0524,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5211,
                "expected_assists": 0.0118,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 11,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 4,
                "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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6715,
                "expected_assists": 0.0327,
                "total_shots": 5,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 10,
                "key_pass": 1,
                "interceptions": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3752,
                "expected_assists": 0.0215,
                "total_shots": 4,
                "shots_off_target": 2,
                "total_pass": 22,
                "accurate_pass": 17,
                "key_pass": 1,
                "aerial_won": 5,
                "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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 70,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.4833,
                "expected_assists": 0.003,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 5,
                "key_pass": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 79,
                "rating": 7.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4502,
                "expected_assists": 0.0862,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "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": 14023967,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 84,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.027,
                "expected_assists": 0.0047,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 9,
                "clearances": 1,
                "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 17,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 20,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0375,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 6,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 26,
                "rating": 8.9,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.2972,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 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"
            },
            {
              "match_id": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6807,
                "expected_assists": 0.0052,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3200,
            "combined_rank_score": 1156.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1802.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7731,
            "source_file": "data/player_rankings.csv",
            "player_name": "Thierno Barry",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Saïd El Mala",
                  "ranking": 3195
                },
                {
                  "player_name": "Fran García",
                  "ranking": 3196
                },
                {
                  "player_name": "Rômulo",
                  "ranking": 3197
                },
                {
                  "player_name": "David Zima",
                  "ranking": 3198
                },
                {
                  "player_name": "Juan Iglesias",
                  "ranking": 3199
                }
              ],
              "lower": [
                {
                  "player_name": "Tiago Palacios",
                  "ranking": 3201
                },
                {
                  "player_name": "Frederik Rønnow",
                  "ranking": 3202
                },
                {
                  "player_name": "David Affengruber",
                  "ranking": 3203
                },
                {
                  "player_name": "Kike Salas",
                  "ranking": 3204
                },
                {
                  "player_name": "Franck Honorat",
                  "ranking": 3205
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.766,
          "history_matches": 43,
          "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": 43,
            "data_confidence": 0.766,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0069,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 147.0,
              "goals_per90": 0.625,
              "assists_per90": 0.0,
              "shots_per90": 3.06,
              "shots_on_target_pct": 60.0,
              "prior_reliability": 0.1067
            },
            "rationale": "XGBoost regressor (F_service) evaluated 43 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Everton, rel: 0.11, gls/90: 0.625, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3723,
                "goals": 0.4817,
                "goal_rate": 0.4817,
                "shots_on_target": 0.9984,
                "total_shots": 2.2812,
                "expected_assists": 0.0386,
                "key_pass": 0.5614,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.8243,
                "accurate_pass": 10.386,
                "duels_won": 5.4898,
                "total_long_balls": 0.1525,
                "accurate_long_balls": 0.0133,
                "total_opp_half_passes": 10.8203,
                "accurate_opp_half_passes": 7.1387,
                "crosses_total": 0.2821,
                "crosses_accurate": 0.1049,
                "touches": 28.2662,
                "possession_lost": 10.0846,
                "dispossessed": 0.8919,
                "duels_lost": 8.8249,
                "aerial_lost": 6.0242,
                "total_contest": 1.1789,
                "won_contest": 0.5289,
                "ball_recovery": 1.9106,
                "challenges_lost": 0.2744,
                "fouls": 1.2141,
                "fouls_drawn": 0.6641,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.401,
                "tackles_won": 0.1553,
                "tackles": 0.1666,
                "clearances": 0.6608,
                "blocks": 0.125,
                "big_chances_created": 0.0667,
                "big_chances_missed": 0.9546,
                "xgot": 0.3653,
                "offsides": 0.1345,
                "ball_carries": 4.3853,
                "total_progression": 17.4696,
                "progressive_carries": 0.8239,
                "shots_off_target": 1.2828
              },
              "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": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0481,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 8.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.4866,
                  "totalOppositionHalfPasses": 8.6552,
                  "accurateOppositionHalfPasses": 5.9361,
                  "accuratePass": 8.4321,
                  "totalShots": 2.326
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.37233829498291016,
                    "model_output": 0.3723,
                    "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.0547
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0467
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0169
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0113
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0113
                        }
                      ],
                      "others": 0.0324,
                      "total": 0.3723,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.242954
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.169071
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.054667
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.035003
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.033861
                        }
                      ],
                      "others_margin": 0.09117
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.4816674292087555,
                    "model_output": 0.4817,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1205
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0899
                      },
                      {
                        "name": "goals",
                        "importance": 0.0562
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0317
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0288
                      }
                    ],
                    "decomposition": {
                      "base": 0.2037,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0488
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0582
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.032
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0248
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0225
                        }
                      ],
                      "others": 0.0917,
                      "total": 0.4817,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.214855
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.207417
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.098119
                        },
                        {
                          "name": "goals",
                          "margin": 0.069937
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.059402
                        }
                      ],
                      "others_margin": 0.210634
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.9983816146850586,
                    "model_output": 0.9984,
                    "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.1596
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0617
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0553
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0444
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0407
                        }
                      ],
                      "others": 0.0997,
                      "total": 0.9984,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.260171
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.08487
                        },
                        {
                          "name": "goals",
                          "margin": 0.070422
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.053092
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.046348
                        }
                      ],
                      "others_margin": 0.105272
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.281144380569458,
                    "model_output": 2.2811,
                    "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.5177
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.167
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0517
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.048
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0473
                        }
                      ],
                      "others": 0.0707,
                      "total": 2.2811,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.517658
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.167007
                        },
                        {
                          "name": "goals",
                          "margin": 0.051656
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.047983
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.047334
                        }
                      ],
                      "others_margin": 0.070801
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.038618262857198715,
                    "model_output": 0.0386,
                    "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.0197
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0109
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0079
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0071
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0045
                        }
                      ],
                      "others": -0.015,
                      "total": 0.0386,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.267292
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.138593
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.1148
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.11455
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.080438
                        }
                      ],
                      "others_margin": -0.328487
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.561424195766449,
                    "model_output": 0.5614,
                    "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.2093
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0563
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0513
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0336
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.032
                        }
                      ],
                      "others": -0.1487,
                      "total": 0.5614,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.270416
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.06592
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.063996
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.044344
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.044057
                        }
                      ],
                      "others_margin": -0.234818
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.773138046264648,
                    "model_output": 6.7731,
                    "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.0437
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0284
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0204
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0137
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0129
                        }
                      ],
                      "others": 0.0018,
                      "total": 6.7731,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.043687
                        },
                        {
                          "name": "rating",
                          "margin": -0.028366
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.020433
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.013674
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012871
                        }
                      ],
                      "others_margin": 0.001765
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 43,
                  "role_matches": 26,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0069, quality 0.725)",
              "stats": {
                "expected_goals": 0.3749,
                "goals": 0.485,
                "goal_rate": 0.485,
                "shots_on_target": 1.0053,
                "total_shots": 2.297,
                "expected_assists": 0.0389,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.284,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2225,
                "fouls_drawn": 0.6687,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4038,
                "tackles_won": 0.1564,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 0.9612,
                "xgot": 0.3678,
                "offsides": 0.1354,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.2917
              },
              "params": {
                "market_value_eur": 31000000,
                "quality_factor": 0.7249,
                "boost_factor": 1.0069,
                "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.0072)",
              "stats": {
                "expected_goals": 0.3749,
                "goals": 0.4857,
                "goal_rate": 0.4857,
                "shots_on_target": 1.0103,
                "total_shots": 2.3008,
                "expected_assists": 0.0389,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.2861,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2137,
                "fouls_drawn": 0.6722,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4009,
                "tackles_won": 0.1594,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 0.9612,
                "xgot": 0.3678,
                "offsides": 0.1344,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.2917
              },
              "params": {
                "blend_weight": 0.0072,
                "history_matches": 43,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9242,
                "prior_reliability": 0.1067,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.2225,
                  "after": 1.2137
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3749,
                "goals": 0.4857,
                "goal_rate": 0.4857,
                "shots_on_target": 1.0103,
                "total_shots": 2.302,
                "expected_assists": 0.0389,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.2861,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2137,
                "fouls_drawn": 0.6722,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4009,
                "tackles_won": 0.1594,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 0.9612,
                "xgot": 0.3678,
                "offsides": 0.1344,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.2917
              },
              "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.4463,
                "goals": 0.5782,
                "goal_rate": 0.5782,
                "shots_on_target": 1.2027,
                "total_shots": 2.7403,
                "expected_assists": 0.0389,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.2861,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2137,
                "fouls_drawn": 0.6722,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4009,
                "tackles_won": 0.1594,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 1.1442,
                "xgot": 0.4378,
                "offsides": 0.1344,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.5376,
                "duel_xg_multiplier": 1.1904,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 2.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.33,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Semi Ajayi, Nobel Mendy",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.33,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.1904,
                  "skill_edge": 0.1095,
                  "height_edge": 0.02,
                  "attacker_skill": 0.7249,
                  "defender_skill": 0.4815,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Semi Ajayi",
                      "market_value": 650000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    },
                    {
                      "player": "Nobel Mendy",
                      "market_value": 7700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5256
                    }
                  ],
                  "xg_override": 0.4463
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.302,
                  "after": 2.7403
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2917,
                  "after": 1.5376
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.0103,
                  "after": 1.2027
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.9612,
                  "after": 1.1442
                },
                {
                  "stat": "goals",
                  "before": 0.4857,
                  "after": 0.5782
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3749,
                  "after": 0.4463
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3678,
                  "after": 0.4378
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.5664,
                "goal_rate": 0.5782,
                "goals": 0,
                "shots_on_target": 1.2027,
                "total_shots": 2.7403,
                "expected_assists": 0.0538,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.2861,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2137,
                "fouls_drawn": 0.6722,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4009,
                "tackles_won": 0.1594,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 1.1442,
                "xgot": 0.5556,
                "offsides": 0.1344,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.5376,
                "duel_xg_multiplier": 1.1904,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 2.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.33,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_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.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.4463,
                  "after": 0.5664
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0389,
                  "after": 0.0538
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 8 by projected rating, fifa_overall 76.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.5664,
                "goal_rate": 0.5782,
                "goals": 0,
                "shots_on_target": 1.2027,
                "total_shots": 2.7403,
                "expected_assists": 0.0538,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.2861,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2137,
                "fouls_drawn": 0.6722,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4009,
                "tackles_won": 0.1594,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 1.1442,
                "xgot": 0.5556,
                "offsides": 0.1344,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.5376,
                "duel_xg_multiplier": 1.1904,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 2.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.33,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_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": 76.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": 3200,
                "fifa_rank": 1802.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.5664,
                "goal_rate": 0.5782,
                "goals": 1,
                "shots_on_target": 1.2027,
                "total_shots": 2.7403,
                "expected_assists": 0.0538,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.2861,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2137,
                "fouls_drawn": 0.6722,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4009,
                "tackles_won": 0.1594,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 1.1442,
                "xgot": 0.5556,
                "offsides": 0.1344,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.5376,
                "duel_xg_multiplier": 1.1904,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 2.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.33,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4324,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.4324,
                "scorer_weight": 0.708,
                "squad_weight_total": 1.9354,
                "weight_share": 0.3658,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.5664,
                "goal_rate": 0.5782,
                "goals": 1,
                "shots_on_target": 1.2027,
                "total_shots": 2.7403,
                "expected_assists": 0.0538,
                "key_pass": 0.5653,
                "rating": 6.7731,
                "minutes": 83.18,
                "total_pass": 14.9266,
                "accurate_pass": 10.4577,
                "duels_won": 5.5277,
                "total_long_balls": 0.1536,
                "accurate_long_balls": 0.0134,
                "total_opp_half_passes": 10.895,
                "accurate_opp_half_passes": 7.188,
                "crosses_total": 0.2861,
                "crosses_accurate": 0.1056,
                "touches": 28.4612,
                "possession_lost": 10.1542,
                "dispossessed": 0.8981,
                "duels_lost": 8.8858,
                "aerial_lost": 6.0658,
                "total_contest": 1.187,
                "won_contest": 0.5325,
                "ball_recovery": 1.9238,
                "challenges_lost": 0.2763,
                "fouls": 1.2137,
                "fouls_drawn": 0.6722,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4009,
                "tackles_won": 0.1594,
                "tackles": 0.1677,
                "clearances": 0.6654,
                "blocks": 0.1259,
                "big_chances_created": 0.0672,
                "big_chances_missed": 1.1442,
                "xgot": 0.5556,
                "offsides": 0.1344,
                "ball_carries": 4.4156,
                "total_progression": 17.5901,
                "progressive_carries": 0.8296,
                "shots_off_target": 1.5376,
                "duel_xg_multiplier": 1.1904,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "aerial_won": 2.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.33,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4324,
                "projected_assists": 0,
                "assist_probability": 0.0524,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0524,
                "provider_weight": 0.043,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0416,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jack Grealish": {
          "player_id": 189061,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 180,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.0953,
            "goal_rate": 0.0873,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.1896,
            "key_pass": 2,
            "rating": 6.8452,
            "minutes": 86,
            "total_pass": 33,
            "accurate_pass": 28,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 20,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 50,
            "possession_lost": 11.9541,
            "dispossessed": 1.0288,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 5,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 3,
            "assist_rate": 0.2311,
            "assists": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1053,
            "offsides": 0,
            "ball_carries": 23,
            "total_progression": 94,
            "progressive_carries": 7,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0466,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.232,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Semi Ajayi, Nobel Mendy",
            "opponent_faced": "Semi Ajayi, Nobel Mendy",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0909,
            "projected_assists": 1,
            "assist_probability": 0.1727,
            "finishing_factor": 1.0975,
            "creation_factor": 1.25,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 79,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2973,
                "total_shots": 0,
                "total_pass": 55,
                "accurate_pass": 47,
                "key_pass": 5,
                "duels_won": 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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 25,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0123,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "tackles": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 24,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0218,
                "expected_assists": 0.1257,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363243,
              "match_date": "2026-08-23",
              "home_team": "Manchester City",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "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": 14025064,
              "match_date": "2026-01-18",
              "home_team": "Aston Villa",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.075,
                "expected_assists": 0.0057,
                "total_shots": 3,
                "total_pass": 22,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 7,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025046,
              "match_date": "2026-01-07",
              "home_team": "Everton",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0718,
                "expected_assists": 0.0686,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 41,
                "accurate_pass": 36,
                "key_pass": 2,
                "tackles": 2,
                "duels_won": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025280,
              "match_date": "2026-01-04",
              "home_team": "Everton",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_assists": 0.2006,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 29,
                "key_pass": 4,
                "tackles": 1,
                "interceptions": 1,
                "aerial_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025268,
              "match_date": "2025-12-30",
              "home_team": "Nottingham Forest",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 18,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0448,
                "expected_assists": 0.0257,
                "total_shots": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025220,
              "match_date": "2025-12-20",
              "home_team": "Everton",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0117,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 10,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025192,
              "match_date": "2025-12-13",
              "home_team": "Chelsea",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 84,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7045,
                "expected_assists": 0.0203,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 17,
                "accurate_pass": 17,
                "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": 461,
            "combined_rank_score": 275.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 182.0,
            "sofascore_rating": 7.23,
            "sofascore_appearances": 20.0,
            "fifa_rank": 369.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8452,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jack Grealish",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gonzalo Plata",
                  "ranking": 456
                },
                {
                  "player_name": "Luciano Acosta",
                  "ranking": 457
                },
                {
                  "player_name": "Kiernan Dewsbury-Hall",
                  "ranking": 458
                },
                {
                  "player_name": "Sebastián Sáez",
                  "ranking": 459
                },
                {
                  "player_name": "Franco Calderón",
                  "ranking": 460
                }
              ],
              "lower": [
                {
                  "player_name": "Hans Vanaken",
                  "ranking": 462
                },
                {
                  "player_name": "Asier Bonel",
                  "ranking": 463
                },
                {
                  "player_name": "Marcos Navarro",
                  "ranking": 464
                },
                {
                  "player_name": "Jae Won Hwang",
                  "ranking": 465
                },
                {
                  "player_name": "Gjoko Zajkov",
                  "ranking": 466
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.751,
          "history_matches": 24,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 24,
            "data_confidence": 0.751,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.007,
            "fbref_prior_metrics": {
              "squad": "Manchester City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 9.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0067
            },
            "rationale": "XGBoost regressor (F_service) evaluated 24 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Manchester City, rel: 0.01, 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.0713,
                "goals": 0.083,
                "goal_rate": 0.083,
                "shots_on_target": 0.2835,
                "total_shots": 0.9786,
                "expected_assists": 0.1361,
                "key_pass": 2.3127,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.1668,
                "accurate_pass": 27.4553,
                "duels_won": 4.9663,
                "total_long_balls": 1.6446,
                "accurate_long_balls": 0.8218,
                "total_opp_half_passes": 23.7327,
                "accurate_opp_half_passes": 19.4525,
                "crosses_total": 1.9886,
                "crosses_accurate": 0.4792,
                "touches": 49.7526,
                "possession_lost": 11.871,
                "dispossessed": 1.0216,
                "duels_lost": 4.5381,
                "aerial_lost": 0.6227,
                "total_contest": 2.5517,
                "won_contest": 1.1165,
                "ball_recovery": 4.9237,
                "challenges_lost": 0.6233,
                "fouls": 0.8469,
                "fouls_drawn": 2.8786,
                "assists": 0.2297,
                "assist_rate": 0.2297,
                "interceptions": 0.4682,
                "tackles_won": 0.444,
                "tackles": 0.8301,
                "clearances": 0.4893,
                "blocks": 0.1697,
                "big_chances_created": 0.3646,
                "big_chances_missed": 0.2014,
                "xgot": 0.0787,
                "offsides": 0.0,
                "ball_carries": 23.2024,
                "total_progression": 93.5608,
                "progressive_carries": 7.2493,
                "shots_off_target": 0.6951
              },
              "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": "Ipswich Town",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.1531,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.1301,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1106,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Bournemouth",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.094,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-01-18",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0799,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-01-07",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0679,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-01-04",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0577,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2025-12-30",
                    "opponent": "Nottingham Forest",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0491,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-12-20",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0417,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-12-13",
                    "opponent": "Chelsea",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0355,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0528,
                  "totalOppositionHalfPasses": 18.6646,
                  "accurateOppositionHalfPasses": 15.3909,
                  "accuratePass": 21.0523,
                  "totalShots": 0.9026
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07128309458494186,
                    "model_output": 0.0713,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.267
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0946
                      },
                      {
                        "name": "goals",
                        "importance": 0.0367
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0304
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0219
                      }
                    ],
                    "decomposition": {
                      "base": 0.199,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0561
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0365
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0262
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0213
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0119
                        }
                      ],
                      "others": -0.0487,
                      "total": 0.0713,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.33154
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.227533
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.15823
                        },
                        {
                          "name": "goals",
                          "margin": -0.149621
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.094477
                        }
                      ],
                      "others_margin": -0.520083
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08296064287424088,
                    "model_output": 0.083,
                    "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.047
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0452
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0358
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0248
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0117
                        }
                      ],
                      "others": -0.0502,
                      "total": 0.083,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.207686
                        },
                        {
                          "name": "goals",
                          "margin": -0.198649
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.191249
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.158146
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.083915
                        }
                      ],
                      "others_margin": -0.474251
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2834502160549164,
                    "model_output": 0.2835,
                    "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.1451
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.1116
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0811
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0668
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0465
                        }
                      ],
                      "others": -0.0926,
                      "total": 0.2835,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.239225
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.178709
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.153389
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.146801
                        },
                        {
                          "name": "goals",
                          "margin": -0.116687
                        }
                      ],
                      "others_margin": -0.282564
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9785352349281311,
                    "model_output": 0.9785,
                    "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.3758
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2447
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1356
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0637
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0592
                        }
                      ],
                      "others": -0.2728,
                      "total": 0.9785,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.375795
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.244726
                        },
                        {
                          "name": "goals",
                          "margin": -0.135557
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.063748
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.059154
                        }
                      ],
                      "others_margin": -0.272782
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.13606473803520203,
                    "model_output": 0.1361,
                    "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.0132
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0109
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0104
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0114
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0056
                        }
                      ],
                      "others": 0.0203,
                      "total": 0.1361,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.186389
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.131705
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.110783
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.109306
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.049211
                        }
                      ],
                      "others_margin": 0.162436
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 2.3126778602600098,
                    "model_output": 2.3127,
                    "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.2777
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.2222
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.2387
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.1271
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1014
                        }
                      ],
                      "others": 0.6716,
                      "total": 2.3127,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.345008
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.209818
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.185105
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.086145
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.063765
                        }
                      ],
                      "others_margin": 0.343125
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.84519100189209,
                    "model_output": 6.8452,
                    "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.0483
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0389
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0358
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0279
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0205
                        }
                      ],
                      "others": -0.0326,
                      "total": 6.8452,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.048289
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.038898
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.035844
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.027929
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.02053
                        }
                      ],
                      "others_margin": -0.032601
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 24,
                  "role_matches": 19,
                  "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.0070, quality 0.641)",
              "stats": {
                "expected_goals": 0.0718,
                "goals": 0.0835,
                "goal_rate": 0.0835,
                "shots_on_target": 0.2854,
                "total_shots": 0.9854,
                "expected_assists": 0.137,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.0025,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8528,
                "fouls_drawn": 2.8988,
                "assists": 0.2313,
                "assist_rate": 0.2313,
                "interceptions": 0.4715,
                "tackles_won": 0.4471,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2028,
                "xgot": 0.0793,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.007,
                "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.0008)",
              "stats": {
                "expected_goals": 0.0718,
                "goals": 0.0834,
                "goal_rate": 0.0834,
                "shots_on_target": 0.2852,
                "total_shots": 0.9847,
                "expected_assists": 0.137,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.001,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8594,
                "fouls_drawn": 2.8966,
                "assists": 0.2311,
                "assist_rate": 0.2311,
                "interceptions": 0.4711,
                "tackles_won": 0.4468,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2028,
                "xgot": 0.0793,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7
              },
              "params": {
                "blend_weight": 0.0008,
                "history_matches": 24,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9598,
                "prior_reliability": 0.0067,
                "competition": "Premier League",
                "squad": "Manchester City"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.8528,
                  "after": 0.8594
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0718,
                "goals": 0.0834,
                "goal_rate": 0.0834,
                "shots_on_target": 0.2852,
                "total_shots": 0.9852,
                "expected_assists": 0.137,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.001,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8594,
                "fouls_drawn": 2.8966,
                "assists": 0.2311,
                "assist_rate": 0.2311,
                "interceptions": 0.4711,
                "tackles_won": 0.4468,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2028,
                "xgot": 0.0793,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7
              },
              "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.0751,
                "goals": 0.0873,
                "goal_rate": 0.0873,
                "shots_on_target": 0.2985,
                "total_shots": 1.0311,
                "expected_assists": 0.137,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.001,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8594,
                "fouls_drawn": 2.8966,
                "assists": 0.2311,
                "assist_rate": 0.2311,
                "interceptions": 0.4711,
                "tackles_won": 0.4468,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2123,
                "xgot": 0.083,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7326,
                "duel_xg_multiplier": 1.0466,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.232,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Semi Ajayi, Nobel Mendy",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.232,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0466,
                  "skill_edge": 0.0717,
                  "height_edge": -0.04,
                  "attacker_skill": 0.6408,
                  "defender_skill": 0.4815,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Semi Ajayi",
                      "market_value": 650000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    },
                    {
                      "player": "Nobel Mendy",
                      "market_value": 7700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5256
                    }
                  ],
                  "xg_override": 0.0751
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.9852,
                  "after": 1.0311
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.7,
                  "after": 0.7326
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2852,
                  "after": 0.2985
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2028,
                  "after": 0.2123
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0953,
                "goal_rate": 0.0873,
                "goals": 0,
                "shots_on_target": 0.2985,
                "total_shots": 1.0311,
                "expected_assists": 0.1896,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.001,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8594,
                "fouls_drawn": 2.8966,
                "assist_rate": 0.2311,
                "assists": 0,
                "interceptions": 0.4711,
                "tackles_won": 0.4468,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2123,
                "xgot": 0.1053,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7326,
                "duel_xg_multiplier": 1.0466,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.232,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0975,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0751,
                  "after": 0.0953
                },
                {
                  "stat": "expected_assists",
                  "before": 0.137,
                  "after": 0.1896
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 6 by projected rating, fifa_overall 82.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0953,
                "goal_rate": 0.0873,
                "goals": 0,
                "shots_on_target": 0.2985,
                "total_shots": 1.0311,
                "expected_assists": 0.1896,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.001,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8594,
                "fouls_drawn": 2.8966,
                "assist_rate": 0.2311,
                "assists": 0,
                "interceptions": 0.4711,
                "tackles_won": 0.4468,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2123,
                "xgot": 0.1053,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7326,
                "duel_xg_multiplier": 1.0466,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.232,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0975,
                "creation_factor": 1.25,
                "fifa_overall": 82.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": 461,
                "fifa_rank": 369.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0953,
                "goal_rate": 0.0873,
                "goals": 0,
                "shots_on_target": 0.2985,
                "total_shots": 1.0311,
                "expected_assists": 0.1896,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.001,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8594,
                "fouls_drawn": 2.8966,
                "assist_rate": 0.2311,
                "assists": 0,
                "interceptions": 0.4711,
                "tackles_won": 0.4468,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2123,
                "xgot": 0.1053,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7326,
                "duel_xg_multiplier": 1.0466,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.232,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0909,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0975,
                "creation_factor": 1.25,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0909,
                "scorer_weight": 0.1046,
                "squad_weight_total": 1.9354,
                "weight_share": 0.054,
                "finishing_factor": 1.0975,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.0953,
                "goal_rate": 0.0873,
                "goals": 0,
                "shots_on_target": 0.2985,
                "total_shots": 1.0311,
                "expected_assists": 0.1896,
                "key_pass": 2.3289,
                "rating": 6.8452,
                "minutes": 86.38,
                "total_pass": 33.399,
                "accurate_pass": 27.6475,
                "duels_won": 5.0011,
                "total_long_balls": 1.6561,
                "accurate_long_balls": 0.8276,
                "total_opp_half_passes": 23.8988,
                "accurate_opp_half_passes": 19.5887,
                "crosses_total": 2.001,
                "crosses_accurate": 0.4826,
                "touches": 50.1009,
                "possession_lost": 11.9541,
                "dispossessed": 1.0288,
                "duels_lost": 4.5699,
                "aerial_lost": 0.6271,
                "total_contest": 2.5696,
                "won_contest": 1.1243,
                "ball_recovery": 4.9582,
                "challenges_lost": 0.6277,
                "fouls": 0.8594,
                "fouls_drawn": 2.8966,
                "assist_rate": 0.2311,
                "assists": 1,
                "interceptions": 0.4711,
                "tackles_won": 0.4468,
                "tackles": 0.8359,
                "clearances": 0.4927,
                "blocks": 0.1709,
                "big_chances_created": 0.3672,
                "big_chances_missed": 0.2123,
                "xgot": 0.1053,
                "offsides": 0.0,
                "ball_carries": 23.3648,
                "total_progression": 94.2157,
                "progressive_carries": 7.3,
                "shots_off_target": 0.7326,
                "duel_xg_multiplier": 1.0466,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.232,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0909,
                "projected_assists": 1,
                "assist_probability": 0.1727,
                "finishing_factor": 1.0975,
                "creation_factor": 1.25,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.1727,
                "provider_weight": 0.237,
                "squad_weight_total": 1.0337,
                "weight_share": 0.2293,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Kiernan Dewsbury-Hall": {
          "player_id": 861970,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 178,
          "market_value": 38000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.2417,
            "assist_rate": 0.1113,
            "assists": 0,
            "expected_goals": 0.2825,
            "goal_rate": 0.2583,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 3,
            "rating": 7.1805,
            "minutes": 89,
            "total_pass": 36,
            "accurate_pass": 31,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 10,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 26,
            "accurate_opp_half_passes": 21,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 57,
            "possession_lost": 13.1354,
            "dispossessed": 1.8185,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1825,
            "ball_carries": 17,
            "total_progression": 89,
            "progressive_carries": 3,
            "shots_off_target": 2,
            "duel_xg_multiplier": 1.1317,
            "dribbles_attempted": 4,
            "dribbles_successful": 1.8,
            "crosses_attempted": 2.5,
            "duel_win_rate": 0.51,
            "pressing_faced": "LOW",
            "matchup_zone": "LW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "Semi Ajayi",
            "opponent_faced": "Semi Ajayi",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.2461,
            "projected_assists": 0,
            "assist_probability": 0.2147,
            "finishing_factor": 1.131,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 89,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3664,
                "expected_assists": 0.3405,
                "total_shots": 6,
                "shots_off_target": 3,
                "total_pass": 44,
                "accurate_pass": 40,
                "key_pass": 2,
                "tackles": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1676,
                "expected_assists": 0.095,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 38,
                "accurate_pass": 36,
                "key_pass": 1,
                "interceptions": 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": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2694,
                "expected_assists": 0.0709,
                "total_shots": 4,
                "shots_on_target": 2,
                "total_pass": 40,
                "accurate_pass": 34,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0639,
                "expected_assists": 0.1557,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 25,
                "key_pass": 4,
                "tackles": 3,
                "tackles_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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 89,
                "rating": 8.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1189,
                "expected_assists": 0.1714,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 37,
                "accurate_pass": 32,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 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": "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": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 84,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0158,
                "expected_assists": 0.0434,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0207,
                "expected_assists": 0.4388,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 40,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "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": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 89,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4321,
                "expected_assists": 0.0797,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 27,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 89,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0607,
                "expected_assists": 0.0146,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 11,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.101,
                "expected_assists": 0.0556,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 43,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 458,
            "combined_rank_score": 274.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 41.0,
            "sofascore_rating": 7.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 507.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1805,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kiernan Dewsbury-Hall",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sergio Carreira",
                  "ranking": 453
                },
                {
                  "player_name": "Neto Moura",
                  "ranking": 454
                },
                {
                  "player_name": "Walter",
                  "ranking": 455
                },
                {
                  "player_name": "Gonzalo Plata",
                  "ranking": 456
                },
                {
                  "player_name": "Luciano Acosta",
                  "ranking": 457
                }
              ],
              "lower": [
                {
                  "player_name": "Sebastián Sáez",
                  "ranking": 459
                },
                {
                  "player_name": "Franco Calderón",
                  "ranking": 460
                },
                {
                  "player_name": "Jack Grealish",
                  "ranking": 461
                },
                {
                  "player_name": "Hans Vanaken",
                  "ranking": 462
                },
                {
                  "player_name": "Asier Bonel",
                  "ranking": 463
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0097,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 179.0,
              "goals_per90": 0.5,
              "assists_per90": 0.0,
              "shots_per90": 2.51,
              "shots_on_target_pct": 40.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 36 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Everton, 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": 1.845,
                "expected_assists": 0.173,
                "assists": 0.1114,
                "assist_rate": 0.1114,
                "expected_goals": 0.1948,
                "goals": 0.2232,
                "goal_rate": 0.2232,
                "shots_on_target": 0.7085,
                "total_shots": 2.3787,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 35.9442,
                "accurate_pass": 30.6204,
                "duels_won": 5.0319,
                "total_long_balls": 2.0287,
                "accurate_long_balls": 0.5326,
                "total_own_half_passes": 10.3937,
                "accurate_own_half_passes": 9.7566,
                "total_opp_half_passes": 25.5505,
                "accurate_opp_half_passes": 20.8637,
                "crosses_total": 3.6048,
                "crosses_accurate": 0.8312,
                "touches": 55.9818,
                "possession_lost": 13.0092,
                "dispossessed": 1.801,
                "duels_lost": 5.0097,
                "aerial_won": 0.4752,
                "aerial_lost": 0.7274,
                "interceptions": 0.283,
                "tackles_won": 0.727,
                "tackles": 1.8932,
                "clearances": 0.6065,
                "total_contest": 2.2602,
                "won_contest": 1.0704,
                "challenges_lost": 0.7846,
                "fouls": 0.5165,
                "fouls_drawn": 1.6027,
                "blocks": 0.2372,
                "big_chances_created": 0.2203,
                "big_chances_missed": 0.3592,
                "xgot": 0.1259,
                "ball_carries": 16.8198,
                "total_progression": 88.6399,
                "progressive_carries": 2.9125,
                "shots_off_target": 1.6702
              },
              "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": "Ipswich Town",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 8.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 2.726,
                  "creative_index": 0.7733,
                  "expectedGoals": 0.1854,
                  "expectedAssists": 0.1714,
                  "onTargetScoringAttempt": 0.7498
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.8449716567993164,
                    "model_output": 1.845,
                    "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.1785
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1409
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0906
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0884
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0639
                        }
                      ],
                      "others": 0.3965,
                      "total": 1.845,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.183528
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124298
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.072489
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.066005
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.045082
                        }
                      ],
                      "others_margin": 0.241876
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.17297476530075073,
                    "model_output": 0.173,
                    "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.0134
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0142
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0105
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0058
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0058
                        }
                      ],
                      "others": 0.0375,
                      "total": 0.173,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.144895
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.133961
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.088711
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.045863
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.04339
                        }
                      ],
                      "others_margin": 0.244618
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.1113818809390068,
                    "model_output": 0.1114,
                    "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.0116
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0066
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0065
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0059
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0057
                        }
                      ],
                      "others": 0.0013,
                      "total": 0.1114,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.127851
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.065776
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.060907
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.0525
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.050188
                        }
                      ],
                      "others_margin": 0.010769
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.19480450451374054,
                    "model_output": 0.1948,
                    "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.0284
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0264
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0183
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0148
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0162
                        }
                      ],
                      "others": -0.0037,
                      "total": 0.1948,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.262873
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.1944
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115963
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.08493
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.084875
                        }
                      ],
                      "others_margin": -0.018882
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.22319823503494263,
                    "model_output": 0.2232,
                    "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.044
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0211
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.018
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0169
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0148
                        }
                      ],
                      "others": 0.0108,
                      "total": 0.2232,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.371997
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.13903
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.104868
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.089353
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.072314
                        }
                      ],
                      "others_margin": 0.049158
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7085315585136414,
                    "model_output": 0.7085,
                    "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.1244
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0688
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0729
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0409
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0363
                        }
                      ],
                      "others": 0.0412,
                      "total": 0.7085,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.325028
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.142654
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.131796
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.066988
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.055933
                        }
                      ],
                      "others_margin": 0.06008
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.378687858581543,
                    "model_output": 2.3787,
                    "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.7566
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1976
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0837
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.058
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0559
                        }
                      ],
                      "others": 0.2364,
                      "total": 2.3787,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.756555
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.197613
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.08367
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.058026
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.055876
                        }
                      ],
                      "others_margin": 0.236483
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.180534362792969,
                    "model_output": 7.1805,
                    "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.0976
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0713
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.042
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0308
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0289
                        }
                      ],
                      "others": 0.061,
                      "total": 7.1805,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.097583
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.071262
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.041983
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.030791
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.028885
                        }
                      ],
                      "others_margin": 0.061157
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "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 1.0097, quality 0.770)",
              "stats": {
                "key_pass": 1.8629,
                "expected_assists": 0.1747,
                "assists": 0.1125,
                "assist_rate": 0.1125,
                "expected_goals": 0.1967,
                "goals": 0.2254,
                "goal_rate": 0.2254,
                "shots_on_target": 0.7154,
                "total_shots": 2.4018,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6398,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 0.4798,
                "aerial_lost": 0.7345,
                "interceptions": 0.2857,
                "tackles_won": 0.7341,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5215,
                "fouls_drawn": 1.6182,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.3627,
                "xgot": 0.1271,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.6864
              },
              "params": {
                "market_value_eur": 38000000,
                "quality_factor": 0.7699,
                "boost_factor": 1.0097,
                "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.0106)",
              "stats": {
                "key_pass": 1.8629,
                "expected_assists": 0.1747,
                "assists": 0.1113,
                "assist_rate": 0.1113,
                "expected_goals": 0.1967,
                "goals": 0.2282,
                "goal_rate": 0.2282,
                "shots_on_target": 0.7183,
                "total_shots": 2.4025,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6481,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 0.4798,
                "aerial_lost": 0.7345,
                "interceptions": 0.2827,
                "tackles_won": 0.7419,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5212,
                "fouls_drawn": 1.6167,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.3627,
                "xgot": 0.1271,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.6864
              },
              "params": {
                "blend_weight": 0.0106,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9839,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 3.6398,
                  "after": 3.6481
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7341,
                  "after": 0.7419
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.8629,
                "expected_assists": 0.1747,
                "assists": 0.1113,
                "assist_rate": 0.1113,
                "expected_goals": 0.1967,
                "goals": 0.2282,
                "goal_rate": 0.2282,
                "shots_on_target": 0.7183,
                "total_shots": 2.4047,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6481,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 0.4798,
                "aerial_lost": 0.7345,
                "interceptions": 0.2827,
                "tackles_won": 0.7419,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5212,
                "fouls_drawn": 1.6167,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.3627,
                "xgot": 0.1271,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.6864
              },
              "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.8629,
                "expected_assists": 0.1747,
                "assists": 0.1113,
                "assist_rate": 0.1113,
                "expected_goals": 0.2226,
                "goals": 0.2583,
                "goal_rate": 0.2583,
                "shots_on_target": 0.8129,
                "total_shots": 2.7214,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6481,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 1.0,
                "aerial_lost": 0.7345,
                "interceptions": 0.2827,
                "tackles_won": 0.7419,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5212,
                "fouls_drawn": 1.6167,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.4105,
                "xgot": 0.1438,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.9085,
                "duel_xg_multiplier": 1.1317,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.8,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.51,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Semi Ajayi",
                "opponent_faced": "Semi Ajayi",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Semi Ajayi",
                  "matchup_zone": "LW vs CB",
                  "duel_win_rate": 0.51,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.1317,
                  "skill_edge": 0.1496,
                  "height_edge": -0.06,
                  "attacker_skill": 0.7699,
                  "defender_skill": 0.4374,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Semi Ajayi",
                      "market_value": 650000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.2226
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.4798,
                  "after": 1.0
                },
                {
                  "stat": "totalShots",
                  "before": 2.4047,
                  "after": 2.7214
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.6864,
                  "after": 1.9085
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7183,
                  "after": 0.8129
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.3627,
                  "after": 0.4105
                },
                {
                  "stat": "goals",
                  "before": 0.2282,
                  "after": 0.2583
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1967,
                  "after": 0.2226
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1271,
                  "after": 0.1438
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 1.8629,
                "expected_assists": 0.2417,
                "assist_rate": 0.1113,
                "assists": 0,
                "expected_goals": 0.2825,
                "goal_rate": 0.2583,
                "goals": 0,
                "shots_on_target": 0.8129,
                "total_shots": 2.7214,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6481,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 1.0,
                "aerial_lost": 0.7345,
                "interceptions": 0.2827,
                "tackles_won": 0.7419,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5212,
                "fouls_drawn": 1.6167,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.4105,
                "xgot": 0.1825,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.9085,
                "duel_xg_multiplier": 1.1317,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.8,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.51,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Semi Ajayi",
                "opponent_faced": "Semi Ajayi",
                "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.131,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2226,
                  "after": 0.2825
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1747,
                  "after": 0.2417
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 1 by projected rating, fifa_overall 81.0; not used by the projection)",
              "stats": {
                "key_pass": 1.8629,
                "expected_assists": 0.2417,
                "assist_rate": 0.1113,
                "assists": 0,
                "expected_goals": 0.2825,
                "goal_rate": 0.2583,
                "goals": 0,
                "shots_on_target": 0.8129,
                "total_shots": 2.7214,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6481,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 1.0,
                "aerial_lost": 0.7345,
                "interceptions": 0.2827,
                "tackles_won": 0.7419,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5212,
                "fouls_drawn": 1.6167,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.4105,
                "xgot": 0.1825,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.9085,
                "duel_xg_multiplier": 1.1317,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.8,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.51,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Semi Ajayi",
                "opponent_faced": "Semi Ajayi",
                "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.131,
                "creation_factor": 0.8,
                "fifa_overall": 81.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": 458,
                "fifa_rank": 507.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": {
                "key_pass": 1.8629,
                "expected_assists": 0.2417,
                "assist_rate": 0.1113,
                "assists": 0,
                "expected_goals": 0.2825,
                "goal_rate": 0.2583,
                "goals": 0,
                "shots_on_target": 0.8129,
                "total_shots": 2.7214,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6481,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 1.0,
                "aerial_lost": 0.7345,
                "interceptions": 0.2827,
                "tackles_won": 0.7419,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5212,
                "fouls_drawn": 1.6167,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.4105,
                "xgot": 0.1825,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.9085,
                "duel_xg_multiplier": 1.1317,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.8,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.51,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Semi Ajayi",
                "opponent_faced": "Semi Ajayi",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.2461,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.131,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2461,
                "scorer_weight": 0.3195,
                "squad_weight_total": 1.9354,
                "weight_share": 0.1651,
                "finishing_factor": 1.131,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.8629,
                "expected_assists": 0.2417,
                "assist_rate": 0.1113,
                "assists": 0,
                "expected_goals": 0.2825,
                "goal_rate": 0.2583,
                "goals": 0,
                "shots_on_target": 0.8129,
                "total_shots": 2.7214,
                "rating": 7.1805,
                "minutes": 88.55,
                "total_pass": 36.2929,
                "accurate_pass": 30.9174,
                "duels_won": 5.0807,
                "total_long_balls": 2.0484,
                "accurate_long_balls": 0.5378,
                "total_own_half_passes": 10.4945,
                "accurate_own_half_passes": 9.8512,
                "total_opp_half_passes": 25.7983,
                "accurate_opp_half_passes": 21.0661,
                "crosses_total": 3.6481,
                "crosses_accurate": 0.8393,
                "touches": 56.5248,
                "possession_lost": 13.1354,
                "dispossessed": 1.8185,
                "duels_lost": 5.0583,
                "aerial_won": 1.0,
                "aerial_lost": 0.7345,
                "interceptions": 0.2827,
                "tackles_won": 0.7419,
                "tackles": 1.9116,
                "clearances": 0.6124,
                "total_contest": 2.2821,
                "won_contest": 1.0808,
                "challenges_lost": 0.7922,
                "fouls": 0.5212,
                "fouls_drawn": 1.6167,
                "blocks": 0.2395,
                "big_chances_created": 0.2224,
                "big_chances_missed": 0.4105,
                "xgot": 0.1825,
                "ball_carries": 16.983,
                "total_progression": 89.4997,
                "progressive_carries": 2.9408,
                "shots_off_target": 1.9085,
                "duel_xg_multiplier": 1.1317,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.8,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.51,
                "pressing_faced": "LOW",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Semi Ajayi",
                "opponent_faced": "Semi Ajayi",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.2461,
                "projected_assists": 0,
                "assist_probability": 0.2147,
                "finishing_factor": 1.131,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.2147,
                "provider_weight": 0.1934,
                "squad_weight_total": 1.0337,
                "weight_share": 0.1871,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Brennan Johnson": {
          "player_id": 1085180,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 22,
          "height": 186,
          "market_value": 32000000,
          "stats": {
            "expected_goals": 0.2501,
            "goal_rate": 0.1987,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0655,
            "key_pass": 1,
            "rating": 6.6589,
            "minutes": 74,
            "total_pass": 16,
            "accurate_pass": 10,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 6,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 29,
            "possession_lost": 9.8485,
            "dispossessed": 0.6646,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0305,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0206,
            "offsides": 1,
            "ball_carries": 6,
            "total_progression": 22,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.1422,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.297,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Semi Ajayi, Nobel Mendy",
            "opponent_faced": "Semi Ajayi, Nobel Mendy",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2213,
            "projected_assists": 0,
            "assist_probability": 0.0634,
            "finishing_factor": 1.0065,
            "creation_factor": 0.8273,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 66,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.8211,
                "expected_assists": 0.002,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 15,
                "accurate_pass": 7,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 75,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1644,
                "expected_assists": 0.183,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 10,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 66,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0522,
                "expected_assists": 0.0371,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 28,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023953,
              "match_date": "2026-05-17",
              "home_team": "Brentford",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Crystal Palace",
              "opponent": "Brentford",
              "stats": {
                "minutes": 45,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 7,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 75,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.04,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 3,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 80,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.151,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024023,
              "match_date": "2026-05-03",
              "home_team": "Bournemouth",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0754,
                "expected_assists": 0.0921,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 16,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024005,
              "match_date": "2026-04-25",
              "home_team": "Liverpool FC",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 59,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1481,
                "expected_assists": 0.0651,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 2013,
            "combined_rank_score": 765.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 421.0,
            "sofascore_rating": 6.9222,
            "sofascore_appearances": 9.0,
            "fifa_rank": 1110.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6589,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brennan Johnson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Saba Lobzhanidze",
                  "ranking": 2008
                },
                {
                  "player_name": "Egor Khvalko",
                  "ranking": 2009
                },
                {
                  "player_name": "Vladislav Malkevich",
                  "ranking": 2010
                },
                {
                  "player_name": "Ayoub El Kaabi",
                  "ranking": 2011
                },
                {
                  "player_name": "Viktor Tsygankov",
                  "ranking": 2012
                }
              ],
              "lower": [
                {
                  "player_name": "Dani Vivian",
                  "ranking": 2014
                },
                {
                  "player_name": "Joaquín Larrivey",
                  "ranking": 2015
                },
                {
                  "player_name": "Dominik Livaković",
                  "ranking": 2016
                },
                {
                  "player_name": "Alexander Nübel",
                  "ranking": 2017
                },
                {
                  "player_name": "Domingos Duarte",
                  "ranking": 2018
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.754,
          "history_matches": 39,
          "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": 39,
            "data_confidence": 0.754,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0077,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "minutes": 36.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0267
            },
            "rationale": "XGBoost regressor (F_service) evaluated 39 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Everton, rel: 0.03, 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.1712,
                "goals": 0.173,
                "goal_rate": 0.173,
                "shots_on_target": 0.4424,
                "total_shots": 1.269,
                "expected_assists": 0.047,
                "key_pass": 0.6478,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.5213,
                "accurate_pass": 10.3257,
                "duels_won": 3.1154,
                "total_long_balls": 1.2954,
                "accurate_long_balls": 0.3234,
                "total_opp_half_passes": 9.5834,
                "accurate_opp_half_passes": 6.1465,
                "crosses_total": 3.0027,
                "crosses_accurate": 0.8645,
                "touches": 29.1533,
                "possession_lost": 9.7732,
                "dispossessed": 0.6595,
                "duels_lost": 3.5327,
                "aerial_lost": 0.7029,
                "total_contest": 0.9632,
                "won_contest": 0.3939,
                "ball_recovery": 2.7879,
                "challenges_lost": 0.6148,
                "fouls": 1.0379,
                "fouls_drawn": 0.5157,
                "assists": 0.0304,
                "assist_rate": 0.0304,
                "interceptions": 0.4465,
                "tackles_won": 1.1976,
                "tackles": 1.6339,
                "clearances": 1.2366,
                "blocks": 0.0115,
                "big_chances_created": 0.0104,
                "big_chances_missed": 0.2458,
                "xgot": 0.0141,
                "offsides": 0.7119,
                "ball_carries": 6.1815,
                "total_progression": 22.1963,
                "progressive_carries": 1.1176,
                "shots_off_target": 0.8266
              },
              "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": "Ipswich Town",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Brentford",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Manchester City",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Everton",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-03",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Liverpool FC",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.176,
                  "totalOppositionHalfPasses": 7.2441,
                  "accurateOppositionHalfPasses": 4.4929,
                  "accuratePass": 7.9622,
                  "totalShots": 0.8448
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.1712438017129898,
                    "model_output": 0.1712,
                    "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.0609
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0306
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0213
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0157
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0104,
                      "total": 0.1712,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.267091
                        },
                        {
                          "name": "goals",
                          "margin": -0.125454
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.097369
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.078663
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.057101
                        }
                      ],
                      "others_margin": -0.058494
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.17299404740333557,
                    "model_output": 0.173,
                    "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.0523
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0324
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0191
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0164
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.173,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.228558
                        },
                        {
                          "name": "goals",
                          "margin": -0.135171
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.08923
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.083502
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.053776
                        }
                      ],
                      "others_margin": -0.030513
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.4423989951610565,
                    "model_output": 0.4424,
                    "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.172
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0647
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0536
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0486
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0306
                        }
                      ],
                      "others": -0.0691,
                      "total": 0.4424,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.277936
                        },
                        {
                          "name": "goals",
                          "margin": -0.09562
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.086924
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.085891
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.058147
                        }
                      ],
                      "others_margin": -0.145102
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.2690237760543823,
                    "model_output": 1.269,
                    "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.4039
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1694
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0637
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0392
                        }
                      ],
                      "others": -0.1413,
                      "total": 1.269,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.403875
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.169405
                        },
                        {
                          "name": "goals",
                          "margin": -0.100027
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.063727
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.039199
                        }
                      ],
                      "others_margin": -0.141199
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04695366695523262,
                    "model_output": 0.047,
                    "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.0185
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.01
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.006
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.004
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0203,
                      "total": 0.047,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.253341
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.128786
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.086181
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.058714
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.0509
                        }
                      ],
                      "others_margin": -0.360326
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6477810144424438,
                    "model_output": 0.6478,
                    "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.2142
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0617
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0461
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.031
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0216
                        }
                      ],
                      "others": -0.1232,
                      "total": 0.6478,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.275996
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.072053
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.057366
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.04051
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.028466
                        }
                      ],
                      "others_margin": -0.174176
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.65890645980835,
                    "model_output": 6.6589,
                    "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.0383
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0284
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0182
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.017
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0149
                        }
                      ],
                      "others": -0.0631,
                      "total": 6.6589,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.038281
                        },
                        {
                          "name": "rating",
                          "margin": -0.028384
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.018235
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.016974
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.014863
                        }
                      ],
                      "others_margin": -0.063081
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "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.0077, quality 0.732)",
              "stats": {
                "expected_goals": 0.1726,
                "goals": 0.1743,
                "goal_rate": 0.1743,
                "shots_on_target": 0.4458,
                "total_shots": 1.2788,
                "expected_assists": 0.0473,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0258,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.0459,
                "fouls_drawn": 0.5197,
                "assists": 0.0306,
                "assist_rate": 0.0306,
                "interceptions": 0.4499,
                "tackles_won": 1.2068,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2477,
                "xgot": 0.0142,
                "offsides": 0.7174,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.833
              },
              "params": {
                "market_value_eur": 32000000,
                "quality_factor": 0.732,
                "boost_factor": 1.0077,
                "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.0020)",
              "stats": {
                "expected_goals": 0.1726,
                "goals": 0.174,
                "goal_rate": 0.174,
                "shots_on_target": 0.4449,
                "total_shots": 1.2763,
                "expected_assists": 0.0473,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0198,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.052,
                "fouls_drawn": 0.5227,
                "assists": 0.0305,
                "assist_rate": 0.0305,
                "interceptions": 0.449,
                "tackles_won": 1.2044,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2477,
                "xgot": 0.0142,
                "offsides": 0.72,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.833
              },
              "params": {
                "blend_weight": 0.002,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8229,
                "prior_reliability": 0.0267,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.0459,
                  "after": 1.052
                },
                {
                  "stat": "totalCross",
                  "before": 3.0258,
                  "after": 3.0198
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1726,
                "goals": 0.174,
                "goal_rate": 0.174,
                "shots_on_target": 0.4449,
                "total_shots": 1.2779,
                "expected_assists": 0.0473,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0198,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.052,
                "fouls_drawn": 0.5227,
                "assists": 0.0305,
                "assist_rate": 0.0305,
                "interceptions": 0.449,
                "tackles_won": 1.2044,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2477,
                "xgot": 0.0142,
                "offsides": 0.72,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.833
              },
              "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.1971,
                "goals": 0.1987,
                "goal_rate": 0.1987,
                "shots_on_target": 0.5082,
                "total_shots": 1.4597,
                "expected_assists": 0.0473,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0198,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.052,
                "fouls_drawn": 0.5227,
                "assists": 0.0305,
                "assist_rate": 0.0305,
                "interceptions": 0.449,
                "tackles_won": 1.2044,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2829,
                "xgot": 0.0162,
                "offsides": 0.72,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.9515,
                "duel_xg_multiplier": 1.1422,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.297,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Semi Ajayi, Nobel Mendy",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.297,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.1422,
                  "skill_edge": 0.1127,
                  "height_edge": -0.016,
                  "attacker_skill": 0.732,
                  "defender_skill": 0.4815,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Semi Ajayi",
                      "market_value": 650000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    },
                    {
                      "player": "Nobel Mendy",
                      "market_value": 7700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5256
                    }
                  ],
                  "xg_override": 0.1971
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.2779,
                  "after": 1.4597
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.833,
                  "after": 0.9515
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4449,
                  "after": 0.5082
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2477,
                  "after": 0.2829
                },
                {
                  "stat": "goals",
                  "before": 0.174,
                  "after": 0.1987
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1726,
                  "after": 0.1971
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.2501,
                "goal_rate": 0.1987,
                "goals": 0,
                "shots_on_target": 0.5082,
                "total_shots": 1.4597,
                "expected_assists": 0.0655,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0198,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.052,
                "fouls_drawn": 0.5227,
                "assist_rate": 0.0305,
                "assists": 0,
                "interceptions": 0.449,
                "tackles_won": 1.2044,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2829,
                "xgot": 0.0206,
                "offsides": 0.72,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.9515,
                "duel_xg_multiplier": 1.1422,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.297,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0065,
                "creation_factor": 0.8273
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1971,
                  "after": 0.2501
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0473,
                  "after": 0.0655
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 15 by projected rating, fifa_overall 78.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.2501,
                "goal_rate": 0.1987,
                "goals": 0,
                "shots_on_target": 0.5082,
                "total_shots": 1.4597,
                "expected_assists": 0.0655,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0198,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.052,
                "fouls_drawn": 0.5227,
                "assist_rate": 0.0305,
                "assists": 0,
                "interceptions": 0.449,
                "tackles_won": 1.2044,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2829,
                "xgot": 0.0206,
                "offsides": 0.72,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.9515,
                "duel_xg_multiplier": 1.1422,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.297,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0065,
                "creation_factor": 0.8273,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2013,
                "fifa_rank": 1110.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.2501,
                "goal_rate": 0.1987,
                "goals": 0,
                "shots_on_target": 0.5082,
                "total_shots": 1.4597,
                "expected_assists": 0.0655,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0198,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.052,
                "fouls_drawn": 0.5227,
                "assist_rate": 0.0305,
                "assists": 0,
                "interceptions": 0.449,
                "tackles_won": 1.2044,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2829,
                "xgot": 0.0206,
                "offsides": 0.72,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.9515,
                "duel_xg_multiplier": 1.1422,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.297,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2213,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0065,
                "creation_factor": 0.8273,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2213,
                "scorer_weight": 0.2517,
                "squad_weight_total": 1.9354,
                "weight_share": 0.1301,
                "finishing_factor": 1.0065,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.2501,
                "goal_rate": 0.1987,
                "goals": 0,
                "shots_on_target": 0.5082,
                "total_shots": 1.4597,
                "expected_assists": 0.0655,
                "key_pass": 0.6528,
                "rating": 6.6589,
                "minutes": 74.06,
                "total_pass": 15.6408,
                "accurate_pass": 10.4052,
                "duels_won": 3.1394,
                "total_long_balls": 1.3054,
                "accurate_long_balls": 0.3259,
                "total_opp_half_passes": 9.6572,
                "accurate_opp_half_passes": 6.1938,
                "crosses_total": 3.0198,
                "crosses_accurate": 0.8712,
                "touches": 29.3778,
                "possession_lost": 9.8485,
                "dispossessed": 0.6646,
                "duels_lost": 3.5599,
                "aerial_lost": 0.7083,
                "total_contest": 0.9706,
                "won_contest": 0.3969,
                "ball_recovery": 2.8094,
                "challenges_lost": 0.6195,
                "fouls": 1.052,
                "fouls_drawn": 0.5227,
                "assist_rate": 0.0305,
                "assists": 0,
                "interceptions": 0.449,
                "tackles_won": 1.2044,
                "tackles": 1.6465,
                "clearances": 1.2461,
                "blocks": 0.0116,
                "big_chances_created": 0.0105,
                "big_chances_missed": 0.2829,
                "xgot": 0.0206,
                "offsides": 0.72,
                "ball_carries": 6.2291,
                "total_progression": 22.3672,
                "progressive_carries": 1.1262,
                "shots_off_target": 0.9515,
                "duel_xg_multiplier": 1.1422,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.297,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Semi Ajayi, Nobel Mendy",
                "opponent_faced": "Semi Ajayi, Nobel Mendy",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2213,
                "projected_assists": 0,
                "assist_probability": 0.0634,
                "finishing_factor": 1.0065,
                "creation_factor": 0.8273,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0634,
                "provider_weight": 0.0542,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0524,
                "creation_factor": 0.8273,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Harrison Armstrong": {
          "player_id": 1627560,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 45,
          "height": 185,
          "market_value": 12400000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0901,
            "assist_rate": 0.0709,
            "assists": 0,
            "expected_goals": 0.1193,
            "goal_rate": 0.0835,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7528,
            "minutes": 84,
            "total_pass": 30,
            "accurate_pass": 25,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 41,
            "possession_lost": 8.3422,
            "dispossessed": 0.8902,
            "duels_lost": 4,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0091,
            "ball_carries": 12,
            "total_progression": 32,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "opponent_faced": "Matt Crooks",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1125,
            "projected_assists": 0,
            "assist_probability": 0.0862,
            "finishing_factor": 0.9271,
            "creation_factor": 1.0504,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1162,
                "expected_assists": 0.3733,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 45,
                "accurate_pass": 38,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.023,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 23,
                "clearances": 1,
                "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": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0945,
                "expected_assists": 0.0268,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 24,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 86,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0319,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0367,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023967,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 21
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 1,
                "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": 14023987,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "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": 14023977,
              "match_date": "2026-02-28",
              "home_team": "Newcastle United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 9,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15238290,
              "match_date": "2026-02-23",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 73,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0887,
                "expected_assists": 0.0408,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 32,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 4036,
            "combined_rank_score": 2018.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 780.0,
            "sofascore_rating": 6.6364,
            "sofascore_appearances": 13.0,
            "fifa_rank": 3257.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7528,
            "source_file": "data/player_rankings.csv",
            "player_name": "Harrison Armstrong",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Andreas Skov Olsen",
                  "ranking": 4031
                },
                {
                  "player_name": "Borja Sainz",
                  "ranking": 4032
                },
                {
                  "player_name": "Matias Moreno",
                  "ranking": 4033
                },
                {
                  "player_name": "Fresneda",
                  "ranking": 4034
                },
                {
                  "player_name": "Leonardo Lelo",
                  "ranking": 4035
                }
              ],
              "lower": [
                {
                  "player_name": "Gastón Benedetti",
                  "ranking": 4037
                },
                {
                  "player_name": "John Egan",
                  "ranking": 4038
                },
                {
                  "player_name": "Vitalii Buialskii",
                  "ranking": 4039
                },
                {
                  "player_name": "Raul Florucz",
                  "ranking": 4040
                },
                {
                  "player_name": "Nahuel Guzmán",
                  "ranking": 4041
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "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.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0029,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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": 0.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (M_service) evaluated 18 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Everton, 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": 0.714,
                "expected_assists": 0.065,
                "assists": 0.063,
                "assist_rate": 0.063,
                "expected_goals": 0.0937,
                "goals": 0.0847,
                "goal_rate": 0.0847,
                "shots_on_target": 0.3356,
                "total_shots": 1.0029,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.6685,
                "accurate_pass": 25.3148,
                "duels_won": 3.3101,
                "total_long_balls": 1.1598,
                "accurate_long_balls": 0.5943,
                "total_own_half_passes": 12.8792,
                "accurate_own_half_passes": 11.8411,
                "total_opp_half_passes": 16.7893,
                "accurate_opp_half_passes": 13.4737,
                "crosses_total": 0.1106,
                "crosses_accurate": 0.0,
                "touches": 41.37,
                "possession_lost": 8.3181,
                "dispossessed": 0.8876,
                "duels_lost": 4.3881,
                "aerial_won": 0.4826,
                "aerial_lost": 1.0326,
                "interceptions": 0.6572,
                "tackles_won": 1.1527,
                "tackles": 1.5612,
                "clearances": 1.1066,
                "total_contest": 1.0498,
                "won_contest": 0.3458,
                "challenges_lost": 0.3601,
                "fouls": 1.4037,
                "fouls_drawn": 0.9205,
                "blocks": 0.458,
                "big_chances_created": 0.3034,
                "big_chances_missed": 0.0709,
                "xgot": 0.0072,
                "ball_carries": 11.7889,
                "total_progression": 31.7068,
                "progressive_carries": 1.2828,
                "shots_off_target": 0.6673
              },
              "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": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1585,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1347,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1145,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.0973,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0827,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0703,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0598,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Arsenal",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0508,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "Newcastle United",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0432,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-02-23",
                    "opponent": "Manchester United",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0367,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 18.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.6982,
                  "creative_index": 0.2813,
                  "expectedGoals": 0.0526,
                  "expectedAssists": 0.0766,
                  "onTargetScoringAttempt": 0.0679
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7140293717384338,
                    "model_output": 0.714,
                    "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.1069
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0979
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0653
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0286
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0209
                        }
                      ],
                      "others": -0.0484,
                      "total": 0.714,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.128508
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118383
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.077344
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.03587
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.027077
                        }
                      ],
                      "others_margin": -0.065599
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06495089828968048,
                    "model_output": 0.065,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.1257
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1072
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0611
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0554
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0543
                      }
                    ],
                    "decomposition": {
                      "base": 0.0858,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.017
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.009
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0052
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0041
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0108,
                      "total": 0.065,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.221347
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122728
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.065019
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.051282
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.040473
                        }
                      ],
                      "others_margin": -0.15272
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0629846379160881,
                    "model_output": 0.063,
                    "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.0114
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0082
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0071
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0058
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0054
                        }
                      ],
                      "others": -0.0115,
                      "total": 0.063,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.144009
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.105126
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.090477
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.080606
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.074958
                        }
                      ],
                      "others_margin": -0.167452
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09371589869260788,
                    "model_output": 0.0937,
                    "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.0146
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0079
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0062
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0059
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0054
                        }
                      ],
                      "others": -0.0023,
                      "total": 0.0937,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.143909
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.07479
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": 0.059511
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.056726
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.055191
                        }
                      ],
                      "others_margin": -0.024282
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08472727239131927,
                    "model_output": 0.0847,
                    "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.0126
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0102
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0082
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0069
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0064
                        }
                      ],
                      "others": -0.0066,
                      "total": 0.0847,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121095
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.097604
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.085434
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.078651
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.073221
                        }
                      ],
                      "others_margin": -0.07453
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3355758488178253,
                    "model_output": 0.3356,
                    "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.0528
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0202
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.011
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0073
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0067
                        }
                      ],
                      "others": 0.004,
                      "total": 0.3356,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.151078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.055
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.031198
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.021281
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.020001
                        }
                      ],
                      "others_margin": 0.011535
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0028831958770752,
                    "model_output": 1.0029,
                    "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.1416
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0707
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0552
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0379
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0126
                        }
                      ],
                      "others": 0.0472,
                      "total": 1.0029,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.141612
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.070716
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.055229
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.037859
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.0126
                        }
                      ],
                      "others_margin": 0.04721
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.752806663513184,
                    "model_output": 6.7528,
                    "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.0444
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0254
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0236
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0227
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0079
                        }
                      ],
                      "others": -0.0175,
                      "total": 6.7528,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.044378
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.02544
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.02358
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.02265
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007856
                        }
                      ],
                      "others_margin": -0.017461
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 18,
                  "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.0029, quality 0.550)",
              "stats": {
                "key_pass": 0.7161,
                "expected_assists": 0.0651,
                "assists": 0.0632,
                "assist_rate": 0.0632,
                "expected_goals": 0.094,
                "goals": 0.085,
                "goal_rate": 0.085,
                "shots_on_target": 0.3365,
                "total_shots": 1.0058,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1109,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6591,
                "tackles_won": 1.156,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4078,
                "fouls_drawn": 0.9232,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0072,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692
              },
              "params": {
                "market_value_eur": 12400000,
                "quality_factor": 0.5502,
                "boost_factor": 1.0029,
                "reference_quality": 0.505,
                "history_matches": 18,
                "history_shrink": 0.2174,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0179)",
              "stats": {
                "key_pass": 0.7161,
                "expected_assists": 0.0651,
                "assists": 0.0709,
                "assist_rate": 0.0709,
                "expected_goals": 0.094,
                "goals": 0.0835,
                "goal_rate": 0.0835,
                "shots_on_target": 0.3305,
                "total_shots": 0.9878,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1177,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6826,
                "tackles_won": 1.1618,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4267,
                "fouls_drawn": 0.9243,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0072,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692
              },
              "params": {
                "blend_weight": 0.0179,
                "history_matches": 18,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9357,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 0.6591,
                  "after": 0.6826
                },
                {
                  "stat": "fouls",
                  "before": 1.4078,
                  "after": 1.4267
                },
                {
                  "stat": "totalShots",
                  "before": 1.0058,
                  "after": 0.9878
                },
                {
                  "stat": "goalAssist",
                  "before": 0.0632,
                  "after": 0.0709
                },
                {
                  "stat": "totalCross",
                  "before": 0.1109,
                  "after": 0.1177
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3365,
                  "after": 0.3305
                },
                {
                  "stat": "wonTackle",
                  "before": 1.156,
                  "after": 1.1618
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7161,
                "expected_assists": 0.0651,
                "assists": 0.0709,
                "assist_rate": 0.0709,
                "expected_goals": 0.094,
                "goals": 0.0835,
                "goal_rate": 0.0835,
                "shots_on_target": 0.3305,
                "total_shots": 0.9997,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1177,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6826,
                "tackles_won": 1.1618,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4267,
                "fouls_drawn": 0.9243,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0072,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692
              },
              "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.7161,
                "expected_assists": 0.0651,
                "assists": 0.0709,
                "assist_rate": 0.0709,
                "expected_goals": 0.094,
                "goals": 0.0835,
                "goal_rate": 0.0835,
                "shots_on_target": 0.3305,
                "total_shots": 0.9997,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1177,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6826,
                "tackles_won": 1.1618,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4267,
                "fouls_drawn": 0.9243,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0072,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692,
                "opponent_faced": "Matt Crooks",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Matt Crooks",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.7161,
                "expected_assists": 0.0901,
                "assist_rate": 0.0709,
                "assists": 0,
                "expected_goals": 0.1193,
                "goal_rate": 0.0835,
                "goals": 0,
                "shots_on_target": 0.3305,
                "total_shots": 0.9997,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1177,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6826,
                "tackles_won": 1.1618,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4267,
                "fouls_drawn": 0.9243,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0091,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692,
                "opponent_faced": "Matt Crooks",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9271,
                "creation_factor": 1.0504
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.094,
                  "after": 0.1193
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0651,
                  "after": 0.0901
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 10 by projected rating, fifa_overall 73.0; not used by the projection)",
              "stats": {
                "key_pass": 0.7161,
                "expected_assists": 0.0901,
                "assist_rate": 0.0709,
                "assists": 0,
                "expected_goals": 0.1193,
                "goal_rate": 0.0835,
                "goals": 0,
                "shots_on_target": 0.3305,
                "total_shots": 0.9997,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1177,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6826,
                "tackles_won": 1.1618,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4267,
                "fouls_drawn": 0.9243,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0091,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692,
                "opponent_faced": "Matt Crooks",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9271,
                "creation_factor": 1.0504,
                "fifa_overall": 73.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": 4036,
                "fifa_rank": 3257.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": {
                "key_pass": 0.7161,
                "expected_assists": 0.0901,
                "assist_rate": 0.0709,
                "assists": 0,
                "expected_goals": 0.1193,
                "goal_rate": 0.0835,
                "goals": 0,
                "shots_on_target": 0.3305,
                "total_shots": 0.9997,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1177,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6826,
                "tackles_won": 1.1618,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4267,
                "fouls_drawn": 0.9243,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0091,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692,
                "opponent_faced": "Matt Crooks",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1125,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9271,
                "creation_factor": 1.0504,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1125,
                "scorer_weight": 0.1106,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0571,
                "finishing_factor": 0.9271,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.7161,
                "expected_assists": 0.0901,
                "assist_rate": 0.0709,
                "assists": 0,
                "expected_goals": 0.1193,
                "goal_rate": 0.0835,
                "goals": 0,
                "shots_on_target": 0.3305,
                "total_shots": 0.9997,
                "rating": 6.7528,
                "minutes": 84.21,
                "total_pass": 29.7545,
                "accurate_pass": 25.3882,
                "duels_won": 3.3197,
                "total_long_balls": 1.1632,
                "accurate_long_balls": 0.596,
                "total_own_half_passes": 12.9165,
                "accurate_own_half_passes": 11.8754,
                "total_opp_half_passes": 16.838,
                "accurate_opp_half_passes": 13.5128,
                "crosses_total": 0.1177,
                "crosses_accurate": 0.0,
                "touches": 41.49,
                "possession_lost": 8.3422,
                "dispossessed": 0.8902,
                "duels_lost": 4.4008,
                "aerial_won": 0.484,
                "aerial_lost": 1.0356,
                "interceptions": 0.6826,
                "tackles_won": 1.1618,
                "tackles": 1.5657,
                "clearances": 1.1098,
                "total_contest": 1.0528,
                "won_contest": 0.3468,
                "challenges_lost": 0.3611,
                "fouls": 1.4267,
                "fouls_drawn": 0.9243,
                "blocks": 0.4593,
                "big_chances_created": 0.3043,
                "big_chances_missed": 0.0711,
                "xgot": 0.0091,
                "ball_carries": 11.8231,
                "total_progression": 31.7987,
                "progressive_carries": 1.2865,
                "shots_off_target": 0.6692,
                "opponent_faced": "Matt Crooks",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1125,
                "projected_assists": 0,
                "assist_probability": 0.0862,
                "finishing_factor": 0.9271,
                "creation_factor": 1.0504,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0862,
                "provider_weight": 0.0946,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0916,
                "creation_factor": 1.0504,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "James Garner": {
          "player_id": 927361,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 37,
          "height": 182,
          "market_value": 48000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1587,
            "assist_rate": 0.0795,
            "assists": 0,
            "expected_goals": 0.0745,
            "goal_rate": 0.054,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.1068,
            "minutes": 86,
            "total_pass": 49,
            "accurate_pass": 44,
            "duels_won": 5,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 20,
            "total_opp_half_passes": 28,
            "accurate_opp_half_passes": 24,
            "crosses_total": 5,
            "crosses_accurate": 1,
            "touches": 67,
            "possession_lost": 10.7918,
            "dispossessed": 0.2377,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 2,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0329,
            "ball_carries": 17,
            "total_progression": 45,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "opponent_faced": "Regan Slater",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0718,
            "projected_assists": 0,
            "assist_probability": 0.1467,
            "finishing_factor": 0.9568,
            "creation_factor": 0.8,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1587,
                "expected_assists": 0.0361,
                "total_shots": 2,
                "total_pass": 61,
                "accurate_pass": 55,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 3,
                "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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0367,
                "expected_assists": 0.0178,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 51,
                "accurate_pass": 46,
                "tackles": 6,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 10,
                "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": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 77,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0797,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 42,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 62,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0049,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 19,
                "tackles": 3,
                "tackles_won": 3,
                "duels_won": 3,
                "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": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 11,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0255,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023967,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0451,
                "expected_assists": 0.2554,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 51,
                "key_pass": 4,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "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"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0183,
                "expected_assists": 0.2455,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 73,
                "accurate_pass": 66,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "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": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0392,
                "expected_assists": 0.3111,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 45,
                "accurate_pass": 37,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1999,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 4,
                "clearances": 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": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0482,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 50,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 9,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 470,
            "combined_rank_score": 281.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 183.0,
            "sofascore_rating": 7.2289,
            "sofascore_appearances": 38.0,
            "fifa_rank": 379.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1068,
            "source_file": "data/player_rankings.csv",
            "player_name": "James Garner",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jae Won Hwang",
                  "ranking": 465
                },
                {
                  "player_name": "Gjoko Zajkov",
                  "ranking": 466
                },
                {
                  "player_name": "Ramón Terrats",
                  "ranking": 467
                },
                {
                  "player_name": "Igor Formiga",
                  "ranking": 468
                },
                {
                  "player_name": "Anthony Caceres",
                  "ranking": 469
                }
              ],
              "lower": [
                {
                  "player_name": "Marcus Rashford",
                  "ranking": 471
                },
                {
                  "player_name": "João Cancelo",
                  "ranking": 472
                },
                {
                  "player_name": "Oh-kyu Kim",
                  "ranking": 473
                },
                {
                  "player_name": "Oscar Lopez",
                  "ranking": 474
                },
                {
                  "player_name": "Eberechi Eze",
                  "ranking": 475
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.758,
          "history_matches": 43,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 43,
            "data_confidence": 0.758,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0097,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 73.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0533
            },
            "rationale": "XGBoost regressor (M_service) evaluated 43 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Everton, 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": 1.2086,
                "expected_assists": 0.1136,
                "assists": 0.079,
                "assist_rate": 0.079,
                "expected_goals": 0.0581,
                "goals": 0.0537,
                "goal_rate": 0.0537,
                "shots_on_target": 0.2535,
                "total_shots": 0.8676,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 48.8956,
                "accurate_pass": 43.2697,
                "duels_won": 5.0073,
                "total_long_balls": 3.2866,
                "accurate_long_balls": 1.1762,
                "total_own_half_passes": 21.1464,
                "accurate_own_half_passes": 19.6617,
                "total_opp_half_passes": 27.7493,
                "accurate_opp_half_passes": 23.6081,
                "crosses_total": 4.7926,
                "crosses_accurate": 1.2314,
                "touches": 66.7633,
                "possession_lost": 10.6881,
                "dispossessed": 0.2354,
                "duels_lost": 3.3869,
                "aerial_won": 0.5424,
                "aerial_lost": 0.4406,
                "interceptions": 1.1462,
                "tackles_won": 1.8815,
                "tackles": 2.9552,
                "clearances": 1.5528,
                "total_contest": 0.3077,
                "won_contest": 0.1645,
                "challenges_lost": 1.4705,
                "fouls": 1.1052,
                "fouls_drawn": 1.4119,
                "blocks": 0.2522,
                "big_chances_created": 0.118,
                "big_chances_missed": 0.0,
                "xgot": 0.0257,
                "ball_carries": 16.3527,
                "total_progression": 45.0412,
                "progressive_carries": 0.6713,
                "shots_off_target": 0.6141
              },
              "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": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.7539,
                  "creative_index": 0.5782,
                  "expectedGoals": 0.0424,
                  "expectedAssists": 0.1063,
                  "onTargetScoringAttempt": 0.2934
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.2085903882980347,
                    "model_output": 1.2086,
                    "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.1226
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.1171
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.1038
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0838
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0794
                        }
                      ],
                      "others": -0.0255,
                      "total": 1.2086,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129612
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.109781
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.088225
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.065948
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.062387
                        }
                      ],
                      "others_margin": -0.020909
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.11361414194107056,
                    "model_output": 0.1136,
                    "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.0125
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0057
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.005
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0038
                        }
                      ],
                      "others": 0.007,
                      "total": 0.1136,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.13614
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.109902
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.050273
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.04465
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.034646
                        }
                      ],
                      "others_margin": 0.064082
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07899709790945053,
                    "model_output": 0.079,
                    "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.0105
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0089
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0068
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0047
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.0104,
                      "total": 0.079,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.13092
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.112086
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.078417
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.052795
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.042294
                        }
                      ],
                      "others_margin": -0.12502
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05814453586935997,
                    "model_output": 0.0581,
                    "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.0116
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0114
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0088
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0052
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.0191,
                      "total": 0.0581,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.116268
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.113498
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.09753
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.062167
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.043629
                        }
                      ],
                      "others_margin": -0.284349
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.053667712956666946,
                    "model_output": 0.0537,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0916
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0421
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0418
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0374
                      },
                      {
                        "name": "goals",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.0976,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0156
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.01
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0072
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0062
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.023,
                      "total": 0.0537,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.174414
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.130165
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.095167
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.08203
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.04987
                        }
                      ],
                      "others_margin": -0.356958
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.25347673892974854,
                    "model_output": 0.2535,
                    "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.0469
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0402
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0141
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0122
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": -0.0105
                        }
                      ],
                      "others": -0.0404,
                      "total": 0.2535,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.135284
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.114742
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.043668
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.039211
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": -0.035014
                        }
                      ],
                      "others_margin": -0.148092
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8675545454025269,
                    "model_output": 0.8676,
                    "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.1398
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0786
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0424
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0372
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0271
                        }
                      ],
                      "others": -0.1316,
                      "total": 0.8676,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.139825
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.078589
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.042409
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.037233
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.027145
                        }
                      ],
                      "others_margin": -0.131649
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.106781005859375,
                    "model_output": 7.1068,
                    "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.0994
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0782
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0348
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0281
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0146
                        }
                      ],
                      "others": 0.0028,
                      "total": 7.1068,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.099361
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.078162
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.034761
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.028144
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.014622
                        }
                      ],
                      "others_margin": 0.002861
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 43,
                  "role_matches": 42,
                  "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.0097, quality 0.817)",
              "stats": {
                "key_pass": 1.2203,
                "expected_assists": 0.1147,
                "assists": 0.0798,
                "assist_rate": 0.0798,
                "expected_goals": 0.0587,
                "goals": 0.0542,
                "goal_rate": 0.0542,
                "shots_on_target": 0.2559,
                "total_shots": 0.876,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8391,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1573,
                "tackles_won": 1.8998,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1159,
                "fouls_drawn": 1.4256,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0259,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201
              },
              "params": {
                "market_value_eur": 48000000,
                "quality_factor": 0.8168,
                "boost_factor": 1.0097,
                "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.0036)",
              "stats": {
                "key_pass": 1.2203,
                "expected_assists": 0.1147,
                "assists": 0.0795,
                "assist_rate": 0.0795,
                "expected_goals": 0.0587,
                "goals": 0.054,
                "goal_rate": 0.054,
                "shots_on_target": 0.255,
                "total_shots": 0.8728,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8389,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1531,
                "tackles_won": 1.9102,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1205,
                "fouls_drawn": 1.4205,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0259,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201
              },
              "params": {
                "blend_weight": 0.0036,
                "history_matches": 43,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9554,
                "prior_reliability": 0.0533,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.8998,
                  "after": 1.9102
                },
                {
                  "stat": "wasFouled",
                  "before": 1.4256,
                  "after": 1.4205
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.2203,
                "expected_assists": 0.1147,
                "assists": 0.0795,
                "assist_rate": 0.0795,
                "expected_goals": 0.0587,
                "goals": 0.054,
                "goal_rate": 0.054,
                "shots_on_target": 0.255,
                "total_shots": 0.8751,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8389,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1531,
                "tackles_won": 1.9102,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1205,
                "fouls_drawn": 1.4205,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0259,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201
              },
              "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.2203,
                "expected_assists": 0.1147,
                "assists": 0.0795,
                "assist_rate": 0.0795,
                "expected_goals": 0.0587,
                "goals": 0.054,
                "goal_rate": 0.054,
                "shots_on_target": 0.255,
                "total_shots": 0.8751,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8389,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1531,
                "tackles_won": 1.9102,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1205,
                "fouls_drawn": 1.4205,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0259,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Regan Slater",
                  "matchup_zone": "Midfield lane"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 1.2203,
                "expected_assists": 0.1587,
                "assist_rate": 0.0795,
                "assists": 0,
                "expected_goals": 0.0745,
                "goal_rate": 0.054,
                "goals": 0,
                "shots_on_target": 0.255,
                "total_shots": 0.8751,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8389,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1531,
                "tackles_won": 1.9102,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1205,
                "fouls_drawn": 1.4205,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0329,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9568,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0587,
                  "after": 0.0745
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1147,
                  "after": 0.1587
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 2 by projected rating, fifa_overall 82.0; not used by the projection)",
              "stats": {
                "key_pass": 1.2203,
                "expected_assists": 0.1587,
                "assist_rate": 0.0795,
                "assists": 0,
                "expected_goals": 0.0745,
                "goal_rate": 0.054,
                "goals": 0,
                "shots_on_target": 0.255,
                "total_shots": 0.8751,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8389,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1531,
                "tackles_won": 1.9102,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1205,
                "fouls_drawn": 1.4205,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0329,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9568,
                "creation_factor": 0.8,
                "fifa_overall": 82.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": 470,
                "fifa_rank": 379.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.2203,
                "expected_assists": 0.1587,
                "assist_rate": 0.0795,
                "assists": 0,
                "expected_goals": 0.0745,
                "goal_rate": 0.054,
                "goals": 0,
                "shots_on_target": 0.255,
                "total_shots": 0.8751,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8389,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1531,
                "tackles_won": 1.9102,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1205,
                "fouls_drawn": 1.4205,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0329,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0718,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9568,
                "creation_factor": 0.8,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0718,
                "scorer_weight": 0.0713,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0368,
                "finishing_factor": 0.9568,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.2203,
                "expected_assists": 0.1587,
                "assist_rate": 0.0795,
                "assists": 0,
                "expected_goals": 0.0745,
                "goal_rate": 0.054,
                "goals": 0,
                "shots_on_target": 0.255,
                "total_shots": 0.8751,
                "rating": 7.1068,
                "minutes": 85.99,
                "total_pass": 49.3699,
                "accurate_pass": 43.6894,
                "duels_won": 5.0559,
                "total_long_balls": 3.3185,
                "accurate_long_balls": 1.1876,
                "total_own_half_passes": 21.3515,
                "accurate_own_half_passes": 19.8524,
                "total_opp_half_passes": 28.0185,
                "accurate_opp_half_passes": 23.8371,
                "crosses_total": 4.8389,
                "crosses_accurate": 1.2433,
                "touches": 67.4109,
                "possession_lost": 10.7918,
                "dispossessed": 0.2377,
                "duels_lost": 3.4198,
                "aerial_won": 0.5477,
                "aerial_lost": 0.4449,
                "interceptions": 1.1531,
                "tackles_won": 1.9102,
                "tackles": 2.9839,
                "clearances": 1.5679,
                "total_contest": 0.3107,
                "won_contest": 0.1661,
                "challenges_lost": 1.4848,
                "fouls": 1.1205,
                "fouls_drawn": 1.4205,
                "blocks": 0.2546,
                "big_chances_created": 0.1191,
                "big_chances_missed": 0.0,
                "xgot": 0.0329,
                "ball_carries": 16.5113,
                "total_progression": 45.4781,
                "progressive_carries": 0.6778,
                "shots_off_target": 0.6201,
                "opponent_faced": "Regan Slater",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0718,
                "projected_assists": 0,
                "assist_probability": 0.1467,
                "finishing_factor": 0.9568,
                "creation_factor": 0.8,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1467,
                "provider_weight": 0.127,
                "squad_weight_total": 1.0337,
                "weight_share": 0.1228,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jarrad Branthwaite": {
          "player_id": 979563,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 195,
          "market_value": 41000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 3,
            "total_shots": 1,
            "rating": 6.8715,
            "minutes": 89,
            "total_pass": 46,
            "accurate_pass": 39,
            "duels_won": 5,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 28,
            "accurate_own_half_passes": 26,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 13,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 62,
            "possession_lost": 8.6117,
            "dispossessed": 0.2578,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 2,
            "goal_rate": 0.056,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0449,
            "expected_assists": 0.0109,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0636,
            "ball_carries": 13,
            "total_progression": 36,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Sorba Thomas",
            "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.0439,
            "projected_assists": 0,
            "assist_probability": 0.0108,
            "finishing_factor": 1.2412,
            "creation_factor": 0.8636,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 53,
                "interceptions": 2,
                "clearances": 10,
                "aerial_won": 3,
                "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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 38,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "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": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.076,
                "expected_assists": 0.003,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 54,
                "accurate_pass": 48,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 4,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.085,
                "expected_assists": 0.0052,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 27,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0127,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 35,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 4,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14025035,
              "match_date": "2026-04-19",
              "home_team": "Everton",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 87,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0161,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 32,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 2,
                "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": 14025022,
              "match_date": "2026-04-11",
              "home_team": "Brentford",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0634,
                "expected_assists": 0.0039,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 35,
                "accurate_pass": 30,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 7,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024017,
              "match_date": "2026-03-21",
              "home_team": "Everton",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 12,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "clearances": 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": 14023941,
              "match_date": "2026-03-03",
              "home_team": "Everton",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Burnley",
              "stats": {
                "minutes": 83,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0638,
                "expected_assists": 0.0141,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 65,
                "accurate_pass": 62,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "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": 14023977,
              "match_date": "2026-02-28",
              "home_team": "Newcastle United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0445,
                "expected_assists": 0.0022,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 26,
                "accurate_pass": 19,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 8,
                "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": 1455,
            "combined_rank_score": 601.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 332.0,
            "sofascore_rating": 7.01,
            "sofascore_appearances": 10.0,
            "fifa_rank": 870.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.8715,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jarrad Branthwaite",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Curtis Jones",
                  "ranking": 1450
                },
                {
                  "player_name": "Álvaro García",
                  "ranking": 1451
                },
                {
                  "player_name": "Natan",
                  "ranking": 1452
                },
                {
                  "player_name": "Ayoze Pérez",
                  "ranking": 1453
                },
                {
                  "player_name": "Mike Penders",
                  "ranking": 1454
                }
              ],
              "lower": [
                {
                  "player_name": "Leonardo Valencia",
                  "ranking": 1456
                },
                {
                  "player_name": "Gulyamkhaydar Gulyamov",
                  "ranking": 1457
                },
                {
                  "player_name": "Lachlan Wales",
                  "ranking": 1458
                },
                {
                  "player_name": "Yankuba Minteh",
                  "ranking": 1459
                },
                {
                  "player_name": "Ladislav Krejčí",
                  "ranking": 1460
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 15,
          "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": 15,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0211,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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 15 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Everton, 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.1262,
                "tackles": 1.2989,
                "tackles_won": 0.7481,
                "clearances": 6.0958,
                "aerial_won": 2.5887,
                "total_shots": 0.6176,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 45.5003,
                "accurate_pass": 38.442,
                "duels_won": 4.5466,
                "total_long_balls": 6.0721,
                "accurate_long_balls": 2.7284,
                "total_own_half_passes": 27.3843,
                "accurate_own_half_passes": 25.5425,
                "total_opp_half_passes": 18.1161,
                "accurate_opp_half_passes": 12.8996,
                "crosses_total": 0.1103,
                "crosses_accurate": 0.0,
                "touches": 60.3444,
                "possession_lost": 8.4337,
                "dispossessed": 0.2525,
                "duels_lost": 2.5801,
                "aerial_lost": 1.2576,
                "total_contest": 0.2177,
                "won_contest": 0.0,
                "ball_recovery": 3.0588,
                "challenges_lost": 0.2956,
                "fouls": 0.5567,
                "fouls_drawn": 0.5066,
                "blocks": 1.6729,
                "goals": 0.056,
                "goal_rate": 0.056,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0347,
                "expected_assists": 0.0077,
                "shots_on_target": 0.4638,
                "big_chances_created": 0.0776,
                "xgot": 0.0491,
                "ball_carries": 13.1663,
                "total_progression": 34.8652,
                "progressive_carries": 0.5585,
                "key_pass": 0.1181,
                "shots_off_target": 0.1538
              },
              "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": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1644,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1397,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1187,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1009,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0858,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Liverpool FC",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.0729,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.062,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Chelsea",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0527,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-03",
                    "opponent": "Burnley",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0448,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0381,
                    "rating": 7.8
                  }
                ],
                "feature_row": {
                  "history_matches": 15.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.6718,
                  "aerialWon": 2.5661,
                  "totalClearance_p90": 6.9679,
                  "totalTackle": 1.15,
                  "totalPass": 42.5592
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1262098550796509,
                    "model_output": 1.1262,
                    "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.1052
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0846
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0347
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0339
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0253
                        }
                      ],
                      "others": -0.0148,
                      "total": 1.1262,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115703
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.084209
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.032594
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.030894
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.022423
                        }
                      ],
                      "others_margin": -0.012965
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2988636493682861,
                    "model_output": 1.2989,
                    "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.1663
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1011
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0573
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0325
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0263
                        }
                      ],
                      "others": -0.0441,
                      "total": 1.2989,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.112703
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.066976
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.040038
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.023451
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.019413
                        }
                      ],
                      "others_margin": -0.033426
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7480954527854919,
                    "model_output": 0.7481,
                    "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.0912
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0493
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0411
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0364
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0246
                        }
                      ],
                      "others": -0.0461,
                      "total": 0.7481,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.101443
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.053536
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.046936
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.043501
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.030567
                        }
                      ],
                      "others_margin": -0.059715
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.095813274383545,
                    "model_output": 6.0958,
                    "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.8257
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5752
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3804
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.3303
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2415
                        }
                      ],
                      "others": 0.2913,
                      "total": 6.0958,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.214489
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126169
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.075482
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.061213
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.042503
                        }
                      ],
                      "others_margin": 0.048963
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.5886664390563965,
                    "model_output": 2.5887,
                    "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.5951
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2349
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2129
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.127
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.075
                        }
                      ],
                      "others": -0.0382,
                      "total": 2.5887,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.358085
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.112258
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.091902
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.051065
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.028978
                        }
                      ],
                      "others_margin": -0.014699
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.61761873960495,
                    "model_output": 0.6176,
                    "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.0639
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0355
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0214
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0207
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0084
                        }
                      ],
                      "others": -0.0034,
                      "total": 0.6176,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.063941
                        },
                        {
                          "name": "rating",
                          "margin": 0.035456
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.021355
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.020663
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.008376
                        }
                      ],
                      "others_margin": -0.003303
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.871492862701416,
                    "model_output": 6.8715,
                    "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.0465
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0147
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0118
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0108
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0103
                        }
                      ],
                      "others": -0.0077,
                      "total": 6.8715,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.046502
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.014653
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.011796
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.010826
                        },
                        {
                          "name": "touches",
                          "margin": 0.010336
                        }
                      ],
                      "others_margin": -0.007751
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 15,
                  "role_matches": 12,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0211, quality 0.786)",
              "stats": {
                "interceptions": 1.15,
                "tackles": 1.3263,
                "tackles_won": 0.7639,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6307,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1126,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5684,
                "fouls_drawn": 0.5173,
                "blocks": 1.7082,
                "goals": 0.0572,
                "goal_rate": 0.0572,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.0079,
                "shots_on_target": 0.4736,
                "big_chances_created": 0.0792,
                "xgot": 0.0501,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157
              },
              "params": {
                "market_value_eur": 41000000,
                "quality_factor": 0.7859,
                "boost_factor": 1.0211,
                "reference_quality": 0.505,
                "history_matches": 15,
                "history_shrink": 0.25,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0217)",
              "stats": {
                "interceptions": 1.1574,
                "tackles": 1.3263,
                "tackles_won": 0.7689,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6278,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1102,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5669,
                "fouls_drawn": 0.5061,
                "blocks": 1.7082,
                "goals": 0.056,
                "goal_rate": 0.056,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.0079,
                "shots_on_target": 0.4741,
                "big_chances_created": 0.0792,
                "xgot": 0.0501,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157
              },
              "params": {
                "blend_weight": 0.0217,
                "history_matches": 15,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9938,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.5173,
                  "after": 0.5061
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.15,
                  "after": 1.1574
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7639,
                  "after": 0.7689
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1574,
                "tackles": 1.3263,
                "tackles_won": 0.7689,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6311,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1102,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5669,
                "fouls_drawn": 0.5061,
                "blocks": 1.7082,
                "goals": 0.056,
                "goal_rate": 0.056,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.0079,
                "shots_on_target": 0.4741,
                "big_chances_created": 0.0792,
                "xgot": 0.0501,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157
              },
              "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.1574,
                "tackles": 1.3263,
                "tackles_won": 0.7689,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6311,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1102,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5669,
                "fouls_drawn": 0.5061,
                "blocks": 1.7082,
                "goals": 0.056,
                "goal_rate": 0.056,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0354,
                "expected_assists": 0.0079,
                "shots_on_target": 0.4741,
                "big_chances_created": 0.0792,
                "xgot": 0.0501,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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": "Sorba Thomas",
                  "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.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.1574,
                "tackles": 1.3263,
                "tackles_won": 0.7689,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6311,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1102,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5669,
                "fouls_drawn": 0.5061,
                "blocks": 1.7082,
                "goal_rate": 0.056,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0449,
                "expected_assists": 0.0109,
                "shots_on_target": 0.4741,
                "big_chances_created": 0.0792,
                "xgot": 0.0636,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.2412,
                "creation_factor": 0.8636
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0354,
                  "after": 0.0449
                }
              ]
            },
            {
              "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.1574,
                "tackles": 1.3263,
                "tackles_won": 0.7689,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6311,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1102,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5669,
                "fouls_drawn": 0.5061,
                "blocks": 1.7082,
                "goal_rate": 0.056,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0449,
                "expected_assists": 0.0109,
                "shots_on_target": 0.4741,
                "big_chances_created": 0.0792,
                "xgot": 0.0636,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.2412,
                "creation_factor": 0.8636,
                "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": 1455,
                "fifa_rank": 870.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.1574,
                "tackles": 1.3263,
                "tackles_won": 0.7689,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6311,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1102,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5669,
                "fouls_drawn": 0.5061,
                "blocks": 1.7082,
                "goal_rate": 0.056,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0449,
                "expected_assists": 0.0109,
                "shots_on_target": 0.4741,
                "big_chances_created": 0.0792,
                "xgot": 0.0636,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.0439,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2412,
                "creation_factor": 0.8636,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0439,
                "scorer_weight": 0.0557,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0288,
                "finishing_factor": 1.2412,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.1574,
                "tackles": 1.3263,
                "tackles_won": 0.7689,
                "clearances": 6.2244,
                "aerial_won": 2.6433,
                "total_shots": 0.6311,
                "rating": 6.8715,
                "minutes": 89.44,
                "total_pass": 46.4604,
                "accurate_pass": 39.2531,
                "duels_won": 4.6425,
                "total_long_balls": 6.2002,
                "accurate_long_balls": 2.786,
                "total_own_half_passes": 27.9621,
                "accurate_own_half_passes": 26.0814,
                "total_opp_half_passes": 18.4983,
                "accurate_opp_half_passes": 13.1718,
                "crosses_total": 0.1102,
                "crosses_accurate": 0.0,
                "touches": 61.6177,
                "possession_lost": 8.6117,
                "dispossessed": 0.2578,
                "duels_lost": 2.6345,
                "aerial_lost": 1.2841,
                "total_contest": 0.2223,
                "won_contest": 0.0,
                "ball_recovery": 3.1233,
                "challenges_lost": 0.3018,
                "fouls": 0.5669,
                "fouls_drawn": 0.5061,
                "blocks": 1.7082,
                "goal_rate": 0.056,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0449,
                "expected_assists": 0.0109,
                "shots_on_target": 0.4741,
                "big_chances_created": 0.0792,
                "xgot": 0.0636,
                "ball_carries": 13.4441,
                "total_progression": 35.6009,
                "progressive_carries": 0.5703,
                "key_pass": 0.1206,
                "shots_off_target": 0.157,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.0439,
                "projected_assists": 0,
                "assist_probability": 0.0108,
                "finishing_factor": 1.2412,
                "creation_factor": 0.8636,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0108,
                "provider_weight": 0.0094,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0091,
                "creation_factor": 0.8636,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "James Tarkowski": {
          "player_id": 145188,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 185,
          "market_value": 5200000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 3,
            "total_shots": 1,
            "rating": 6.9944,
            "minutes": 90,
            "total_pass": 45,
            "accurate_pass": 37,
            "duels_won": 7,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 27,
            "accurate_own_half_passes": 25,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 12,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 58,
            "possession_lost": 8.2269,
            "dispossessed": 0.0095,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.1851,
            "goals": 0,
            "assist_rate": 0.2319,
            "assists": 0,
            "expected_goals": 0.0668,
            "expected_assists": 0.0594,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1412,
            "ball_carries": 12,
            "total_progression": 52,
            "progressive_carries": 0,
            "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.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Lewie Coyle",
            "pressing_zone": "RWB vs LW + LB",
            "matchup_zone": "RWB vs LW + LB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0646,
            "projected_assists": 0,
            "assist_probability": 0.0577,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0135,
                "expected_assists": 0.0076,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 49,
                "accurate_pass": 43,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 4,
                "clearances": 7,
                "aerial_won": 5,
                "duels_won": 9,
                "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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0097,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 48,
                "tackles": 5,
                "tackles_won": 4,
                "clearances": 3,
                "aerial_won": 3,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0186,
                "expected_assists": 0.0055,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 43,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 4,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0951,
                "expected_assists": 0.006,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 40,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 3,
                "clearances": 5,
                "aerial_won": 5,
                "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": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0512,
                "expected_assists": 0.003,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 25,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 4,
                "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": "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": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0601,
                "expected_assists": 0.0037,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 33,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0724,
                "expected_assists": 0.0244,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 42,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "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": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1883,
                "expected_assists": 0.5515,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 31,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 7,
                "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": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.2071,
                "total_shots": 0,
                "total_pass": 69,
                "accurate_pass": 64,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 770,
            "combined_rank_score": 372.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 81.0,
            "sofascore_rating": 7.55,
            "sofascore_appearances": 2.0,
            "fifa_rank": 664.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9944,
            "source_file": "data/player_rankings.csv",
            "player_name": "James Tarkowski",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Marko Bugarin",
                  "ranking": 765
                },
                {
                  "player_name": "Maximiliano Araújo",
                  "ranking": 766
                },
                {
                  "player_name": "Han Tae-Hee",
                  "ranking": 767
                },
                {
                  "player_name": "Stanislav Lobotka",
                  "ranking": 768
                },
                {
                  "player_name": "Pierre-Emile Højbjerg",
                  "ranking": 769
                }
              ],
              "lower": [
                {
                  "player_name": "Sergi Altimira",
                  "ranking": 771
                },
                {
                  "player_name": "Joshua Oluwayemi",
                  "ranking": 772
                },
                {
                  "player_name": "Eric Bailly",
                  "ranking": 773
                },
                {
                  "player_name": "Bobir Abdikholikov",
                  "ranking": 774
                },
                {
                  "player_name": "Saidazamat Mirsaidov",
                  "ranking": 775
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 42,
          "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": 42,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9987,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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": 1.0,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 42 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Everton, rel: 0.13, gls/90: 0.5, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1756,
                "tackles": 1.5188,
                "tackles_won": 1.007,
                "clearances": 5.562,
                "aerial_won": 3.1635,
                "total_shots": 0.7261,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.6043,
                "accurate_pass": 36.9637,
                "duels_won": 6.9945,
                "total_long_balls": 5.8677,
                "accurate_long_balls": 2.2078,
                "total_own_half_passes": 26.7632,
                "accurate_own_half_passes": 25.0178,
                "total_opp_half_passes": 17.8411,
                "accurate_opp_half_passes": 11.946,
                "crosses_total": 0.1372,
                "crosses_accurate": 0.003,
                "touches": 58.5417,
                "possession_lost": 8.2376,
                "dispossessed": 0.0095,
                "duels_lost": 2.248,
                "aerial_lost": 1.423,
                "total_contest": 0.166,
                "won_contest": 0.018,
                "ball_recovery": 3.138,
                "challenges_lost": 0.0607,
                "fouls": 0.6364,
                "fouls_drawn": 1.2613,
                "blocks": 0.921,
                "goals": 0.1824,
                "goal_rate": 0.1824,
                "assists": 0.2344,
                "assist_rate": 0.2344,
                "expected_goals": 0.0527,
                "expected_assists": 0.043,
                "shots_on_target": 0.2902,
                "big_chances_created": 0.2009,
                "xgot": 0.1114,
                "ball_carries": 12.4657,
                "total_progression": 52.1834,
                "progressive_carries": 0.311,
                "key_pass": 0.4588,
                "shots_off_target": 0.4359
              },
              "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": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.0941,
                  "aerialWon": 3.742,
                  "totalClearance_p90": 5.0941,
                  "totalTackle": 1.9915,
                  "totalPass": 44.6043
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1755729913711548,
                    "model_output": 1.1756,
                    "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.0941
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0732
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0379
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0238
                        },
                        {
                          "name": "errorLeadToAGoal",
                          "contribution": 0.0171
                        }
                      ],
                      "others": 0.0722,
                      "total": 1.1756,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.104165
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.074108
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.036311
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.022126
                        },
                        {
                          "name": "errorLeadToAGoal",
                          "margin": 0.015644
                        }
                      ],
                      "others_margin": 0.063402
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.5187872648239136,
                    "model_output": 1.5188,
                    "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.1686
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.1057
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0681
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0599
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0503
                        }
                      ],
                      "others": 0.0199,
                      "total": 1.5188,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114201
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.070014
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.047848
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.042221
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.034102
                        }
                      ],
                      "others_margin": 0.013161
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0069829225540161,
                    "model_output": 1.007,
                    "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.1041
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0916
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0813
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0572
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0428
                        }
                      ],
                      "others": 0.0238,
                      "total": 1.007,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114972
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.09126
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.080594
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.057364
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.042624
                        }
                      ],
                      "others_margin": 0.023993
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.561954975128174,
                    "model_output": 5.562,
                    "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.5431
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4705
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2223
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2135
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2143
                        }
                      ],
                      "others": 0.4469,
                      "total": 5.562,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.146144
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111352
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.048581
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.044539
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.042799
                        }
                      ],
                      "others_margin": 0.083752
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 3.163527727127075,
                    "model_output": 3.1635,
                    "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.8795
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2452
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1866
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.1179
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0865
                        }
                      ],
                      "others": 0.2658,
                      "total": 3.1635,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.492497
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.102919
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.07181
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.042858
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.030297
                        }
                      ],
                      "others_margin": 0.087753
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7261433601379395,
                    "model_output": 0.7261,
                    "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.1339
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0443
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.04
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.02
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0169
                        }
                      ],
                      "others": -0.0001,
                      "total": 0.7261,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.13394
                        },
                        {
                          "name": "rating",
                          "margin": 0.044267
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.039975
                        },
                        {
                          "name": "history_matches",
                          "margin": 0.019957
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.016903
                        }
                      ],
                      "others_margin": -3.1e-05
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.994382381439209,
                    "model_output": 6.9944,
                    "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.0405
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0362
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0356
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0252
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0196
                        }
                      ],
                      "others": 0.0522,
                      "total": 6.9944,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.040516
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.03617
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.035558
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.025209
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.019645
                        }
                      ],
                      "others_margin": 0.052153
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 42,
                  "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.9987, quality 0.465)",
              "stats": {
                "interceptions": 1.174,
                "tackles": 1.5168,
                "tackles_won": 1.0057,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7252,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.137,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6356,
                "fouls_drawn": 1.2597,
                "blocks": 0.9198,
                "goals": 0.1822,
                "goal_rate": 0.1822,
                "assists": 0.2341,
                "assist_rate": 0.2341,
                "expected_goals": 0.0526,
                "expected_assists": 0.0429,
                "shots_on_target": 0.2898,
                "big_chances_created": 0.2006,
                "xgot": 0.1113,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353
              },
              "params": {
                "market_value_eur": 5200000,
                "quality_factor": 0.4646,
                "boost_factor": 0.9987,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0092)",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.5168,
                "tackles_won": 1.001,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7277,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.1357,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6344,
                "fouls_drawn": 1.2711,
                "blocks": 0.9198,
                "goals": 0.1851,
                "goal_rate": 0.1851,
                "assists": 0.2319,
                "assist_rate": 0.2319,
                "expected_goals": 0.0526,
                "expected_assists": 0.0429,
                "shots_on_target": 0.2917,
                "big_chances_created": 0.2006,
                "xgot": 0.1113,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353
              },
              "params": {
                "blend_weight": 0.0092,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.174,
                  "after": 1.1908
                },
                {
                  "stat": "wasFouled",
                  "before": 1.2597,
                  "after": 1.2711
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.5168,
                "tackles_won": 1.001,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7277,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.1357,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6344,
                "fouls_drawn": 1.2711,
                "blocks": 0.9198,
                "goals": 0.1851,
                "goal_rate": 0.1851,
                "assists": 0.2319,
                "assist_rate": 0.2319,
                "expected_goals": 0.0526,
                "expected_assists": 0.0429,
                "shots_on_target": 0.2917,
                "big_chances_created": 0.2006,
                "xgot": 0.1113,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353
              },
              "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.5168,
                "tackles_won": 1.001,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7277,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.1357,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6344,
                "fouls_drawn": 1.2711,
                "blocks": 0.9198,
                "goals": 0.1851,
                "goal_rate": 0.1851,
                "assists": 0.2319,
                "assist_rate": 0.2319,
                "expected_goals": 0.0526,
                "expected_assists": 0.0429,
                "shots_on_target": 0.2917,
                "big_chances_created": 0.2006,
                "xgot": 0.1113,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Lewie Coyle",
                "pressing_zone": "RWB vs LW + LB",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Lewie Coyle",
                  "matchup_zone": "RWB vs LW + LB"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.5168,
                "tackles_won": 1.001,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7277,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.1357,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6344,
                "fouls_drawn": 1.2711,
                "blocks": 0.9198,
                "goal_rate": 0.1851,
                "goals": 0,
                "assist_rate": 0.2319,
                "assists": 0,
                "expected_goals": 0.0668,
                "expected_assists": 0.0594,
                "shots_on_target": 0.2917,
                "big_chances_created": 0.2006,
                "xgot": 0.1412,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Lewie Coyle",
                "pressing_zone": "RWB vs LW + LB",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0526,
                  "after": 0.0668
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0429,
                  "after": 0.0594
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 4 by projected rating, fifa_overall 80.0; not used by the projection)",
              "stats": {
                "interceptions": 1.1908,
                "tackles": 1.5168,
                "tackles_won": 1.001,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7277,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.1357,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6344,
                "fouls_drawn": 1.2711,
                "blocks": 0.9198,
                "goal_rate": 0.1851,
                "goals": 0,
                "assist_rate": 0.2319,
                "assists": 0,
                "expected_goals": 0.0668,
                "expected_assists": 0.0594,
                "shots_on_target": 0.2917,
                "big_chances_created": 0.2006,
                "xgot": 0.1412,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Lewie Coyle",
                "pressing_zone": "RWB vs LW + LB",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 770,
                "fifa_rank": 664.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.5168,
                "tackles_won": 1.001,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7277,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.1357,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6344,
                "fouls_drawn": 1.2711,
                "blocks": 0.9198,
                "goal_rate": 0.1851,
                "goals": 0,
                "assist_rate": 0.2319,
                "assists": 0,
                "expected_goals": 0.0668,
                "expected_assists": 0.0594,
                "shots_on_target": 0.2917,
                "big_chances_created": 0.2006,
                "xgot": 0.1412,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Lewie Coyle",
                "pressing_zone": "RWB vs LW + LB",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0646,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0646,
                "scorer_weight": 0.0835,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0431,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.5168,
                "tackles_won": 1.001,
                "clearances": 5.5547,
                "aerial_won": 3.1594,
                "total_shots": 0.7277,
                "rating": 6.9944,
                "minutes": 90.0,
                "total_pass": 44.5463,
                "accurate_pass": 36.9156,
                "duels_won": 6.9854,
                "total_long_balls": 5.8601,
                "accurate_long_balls": 2.2049,
                "total_own_half_passes": 26.7284,
                "accurate_own_half_passes": 24.9853,
                "total_opp_half_passes": 17.8179,
                "accurate_opp_half_passes": 11.9305,
                "crosses_total": 0.1357,
                "crosses_accurate": 0.003,
                "touches": 58.4656,
                "possession_lost": 8.2269,
                "dispossessed": 0.0095,
                "duels_lost": 2.2451,
                "aerial_lost": 1.4212,
                "total_contest": 0.1658,
                "won_contest": 0.018,
                "ball_recovery": 3.1339,
                "challenges_lost": 0.0606,
                "fouls": 0.6344,
                "fouls_drawn": 1.2711,
                "blocks": 0.9198,
                "goal_rate": 0.1851,
                "goals": 0,
                "assist_rate": 0.2319,
                "assists": 0,
                "expected_goals": 0.0668,
                "expected_assists": 0.0594,
                "shots_on_target": 0.2917,
                "big_chances_created": 0.2006,
                "xgot": 0.1412,
                "ball_carries": 12.4495,
                "total_progression": 52.1156,
                "progressive_carries": 0.3106,
                "key_pass": 0.4582,
                "shots_off_target": 0.4353,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Lewie Coyle",
                "pressing_zone": "RWB vs LW + LB",
                "matchup_zone": "RWB vs LW + LB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0646,
                "projected_assists": 0,
                "assist_probability": 0.0577,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0577,
                "provider_weight": 0.0742,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0718,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ainsley Maitland-Niles": {
          "player_id": 352768,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 178,
          "market_value": 10900000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.6455,
            "minutes": 86,
            "total_pass": 24,
            "accurate_pass": 21,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 12,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 38,
            "possession_lost": 5.8417,
            "dispossessed": 0.3907,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.2824,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0213,
            "expected_assists": 0.1236,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1513,
            "ball_carries": 10,
            "total_progression": 46,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 2.0,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.612,
            "opponent_faced": "Regan Slater",
            "pressing_zone": "Left Mid vs Right Back — Wide Channel",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0211,
            "projected_assists": 0,
            "assist_probability": 0.1163,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 89,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1078,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 30,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 75,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0274,
                "expected_assists": 0.1388,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 13,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0271,
                "expected_assists": 0.0036,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2124,
            "combined_rank_score": 802.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 1464.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6455,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ainsley Maitland-Niles",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Christian Bracco",
                  "ranking": 2119
                },
                {
                  "player_name": "Park Su-been",
                  "ranking": 2120
                },
                {
                  "player_name": "Edvinas Girdvainis",
                  "ranking": 2121
                },
                {
                  "player_name": "Son Seung-Min",
                  "ranking": 2122
                },
                {
                  "player_name": "Diogo Dalot",
                  "ranking": 2123
                }
              ],
              "lower": [
                {
                  "player_name": "Crysencio Summerville",
                  "ranking": 2125
                },
                {
                  "player_name": "Gabriel Jesus",
                  "ranking": 2126
                },
                {
                  "player_name": "Sepp van den Berg",
                  "ranking": 2127
                },
                {
                  "player_name": "Chan-hyung Lee",
                  "ranking": 2128
                },
                {
                  "player_name": "Sarvar Abduhamidov",
                  "ranking": 2129
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "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": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0052,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 3 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.8206,
                "tackles": 1.8328,
                "tackles_won": 1.1653,
                "clearances": 2.0424,
                "aerial_won": 0.7327,
                "total_shots": 0.5972,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 23.9223,
                "accurate_pass": 21.0457,
                "duels_won": 3.7123,
                "total_long_balls": 1.4383,
                "accurate_long_balls": 1.0496,
                "total_own_half_passes": 11.9534,
                "accurate_own_half_passes": 11.623,
                "total_opp_half_passes": 11.9689,
                "accurate_opp_half_passes": 9.4227,
                "crosses_total": 1.4383,
                "crosses_accurate": 0.3887,
                "touches": 37.9922,
                "possession_lost": 5.8115,
                "dispossessed": 0.3887,
                "duels_lost": 2.0,
                "aerial_lost": 0.9504,
                "total_contest": 1.1079,
                "won_contest": 1.1079,
                "ball_recovery": 2.4879,
                "challenges_lost": 0.6608,
                "fouls": 0.0,
                "fouls_drawn": 0.3887,
                "blocks": 0.3887,
                "goals": 0.2809,
                "goal_rate": 0.2809,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0167,
                "expected_assists": 0.0888,
                "shots_on_target": 0.2809,
                "big_chances_created": 0.3887,
                "xgot": 0.1186,
                "ball_carries": 9.9125,
                "total_progression": 46.0532,
                "progressive_carries": 2.1574,
                "key_pass": 1.1079,
                "shots_off_target": 0.3163
              },
              "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": "Ipswich Town",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.2157,
                  "aerialWon": 0.3887,
                  "totalClearance_p90": 2.3654,
                  "totalTackle": 1.827,
                  "totalPass": 23.9223
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8205700516700745,
                    "model_output": 0.8206,
                    "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.1084
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0977
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0536
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0251
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0236
                        }
                      ],
                      "others": -0.0523,
                      "total": 0.8206,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.119081
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.106637
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.059884
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.027607
                        },
                        {
                          "name": "touches",
                          "margin": -0.026694
                        }
                      ],
                      "others_margin": -0.061783
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.832787275314331,
                    "model_output": 1.8328,
                    "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.1886
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0618
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0633
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0456
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0452
                        }
                      ],
                      "others": 0.1256,
                      "total": 1.8328,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126885
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.038313
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.037756
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.027089
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.026846
                        }
                      ],
                      "others_margin": 0.071038
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.1653021574020386,
                    "model_output": 1.1653,
                    "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.1122
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.06
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.04
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0338
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0304
                        }
                      ],
                      "others": 0.1145,
                      "total": 1.1653,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123432
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.060196
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.03977
                        },
                        {
                          "name": "rating",
                          "margin": 0.033686
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.029315
                        }
                      ],
                      "others_margin": 0.103536
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.0424294471740723,
                    "model_output": 2.0424,
                    "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.5318
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4017
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.3503
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2939
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2506
                        }
                      ],
                      "others": -0.3841,
                      "total": 2.0424,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.167345
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128915
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.111465
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.104183
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.098273
                        }
                      ],
                      "others_margin": -0.172292
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.732656717300415,
                    "model_output": 0.7327,
                    "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.5032
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1246
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.108
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0809
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.033
                        }
                      ],
                      "others": -0.0488,
                      "total": 0.7327,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.452704
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.132606
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.113879
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.094654
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.041321
                        }
                      ],
                      "others_margin": -0.064679
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5971881151199341,
                    "model_output": 0.5972,
                    "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.0556
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0457
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0367
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0245
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0227
                        }
                      ],
                      "others": -0.0591,
                      "total": 0.5972,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.055649
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.045702
                        },
                        {
                          "name": "rating",
                          "margin": 0.036691
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.024532
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.022729
                        }
                      ],
                      "others_margin": -0.059245
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.645544052124023,
                    "model_output": 6.6455,
                    "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.04
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0234
                        },
                        {
                          "name": "touches",
                          "contribution": -0.023
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0188
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0155
                        }
                      ],
                      "others": -0.0657,
                      "total": 6.6455,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.040026
                        },
                        {
                          "name": "rating",
                          "margin": 0.023387
                        },
                        {
                          "name": "touches",
                          "margin": -0.022982
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.018768
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.015544
                        }
                      ],
                      "others_margin": -0.065654
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 3,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0052, quality 0.533)",
              "stats": {
                "interceptions": 0.8248,
                "tackles": 1.8423,
                "tackles_won": 1.1714,
                "clearances": 2.0531,
                "aerial_won": 0.7365,
                "total_shots": 0.6003,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 24.0467,
                "accurate_pass": 21.1551,
                "duels_won": 3.7316,
                "total_long_balls": 1.4458,
                "accurate_long_balls": 1.0551,
                "total_own_half_passes": 12.0156,
                "accurate_own_half_passes": 11.6834,
                "total_opp_half_passes": 12.0311,
                "accurate_opp_half_passes": 9.4717,
                "crosses_total": 1.4458,
                "crosses_accurate": 0.3907,
                "touches": 38.1898,
                "possession_lost": 5.8417,
                "dispossessed": 0.3907,
                "duels_lost": 2.0104,
                "aerial_lost": 0.9553,
                "total_contest": 1.1137,
                "won_contest": 1.1137,
                "ball_recovery": 2.5008,
                "challenges_lost": 0.6642,
                "fouls": 0.0,
                "fouls_drawn": 0.3907,
                "blocks": 0.3907,
                "goals": 0.2824,
                "goal_rate": 0.2824,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0168,
                "expected_assists": 0.0893,
                "shots_on_target": 0.2824,
                "big_chances_created": 0.3907,
                "xgot": 0.1192,
                "ball_carries": 9.964,
                "total_progression": 46.2927,
                "progressive_carries": 2.1686,
                "key_pass": 1.1137,
                "shots_off_target": 0.3179
              },
              "params": {
                "market_value_eur": 10900000,
                "quality_factor": 0.533,
                "boost_factor": 1.0052,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8248,
                "tackles": 1.8423,
                "tackles_won": 1.1714,
                "clearances": 2.0531,
                "aerial_won": 0.7365,
                "total_shots": 0.6003,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 24.0467,
                "accurate_pass": 21.1551,
                "duels_won": 3.7316,
                "total_long_balls": 1.4458,
                "accurate_long_balls": 1.0551,
                "total_own_half_passes": 12.0156,
                "accurate_own_half_passes": 11.6834,
                "total_opp_half_passes": 12.0311,
                "accurate_opp_half_passes": 9.4717,
                "crosses_total": 1.4458,
                "crosses_accurate": 0.3907,
                "touches": 38.1898,
                "possession_lost": 5.8417,
                "dispossessed": 0.3907,
                "duels_lost": 2.0104,
                "aerial_lost": 0.9553,
                "total_contest": 1.1137,
                "won_contest": 1.1137,
                "ball_recovery": 2.5008,
                "challenges_lost": 0.6642,
                "fouls": 0.0,
                "fouls_drawn": 0.3907,
                "blocks": 0.3907,
                "goals": 0.2824,
                "goal_rate": 0.2824,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0168,
                "expected_assists": 0.0893,
                "shots_on_target": 0.2824,
                "big_chances_created": 0.3907,
                "xgot": 0.1192,
                "ball_carries": 9.964,
                "total_progression": 46.2927,
                "progressive_carries": 2.1686,
                "key_pass": 1.1137,
                "shots_off_target": 0.3179
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "interceptions": 0.8248,
                "tackles": 1.8423,
                "tackles_won": 1.1714,
                "clearances": 2.0531,
                "aerial_won": 0.7365,
                "total_shots": 0.6003,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 24.0467,
                "accurate_pass": 21.1551,
                "duels_won": 3.7316,
                "total_long_balls": 1.4458,
                "accurate_long_balls": 1.0551,
                "total_own_half_passes": 12.0156,
                "accurate_own_half_passes": 11.6834,
                "total_opp_half_passes": 12.0311,
                "accurate_opp_half_passes": 9.4717,
                "crosses_total": 1.4458,
                "crosses_accurate": 0.3907,
                "touches": 38.1898,
                "possession_lost": 5.8417,
                "dispossessed": 0.3907,
                "duels_lost": 2.0104,
                "aerial_lost": 0.9553,
                "total_contest": 1.1137,
                "won_contest": 1.1137,
                "ball_recovery": 2.5008,
                "challenges_lost": 0.6642,
                "fouls": 0.0,
                "fouls_drawn": 0.3907,
                "blocks": 0.3907,
                "goals": 0.2824,
                "goal_rate": 0.2824,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0168,
                "expected_assists": 0.0893,
                "shots_on_target": 0.2824,
                "big_chances_created": 0.3907,
                "xgot": 0.1192,
                "ball_carries": 9.964,
                "total_progression": 46.2927,
                "progressive_carries": 2.1686,
                "key_pass": 1.1137,
                "shots_off_target": 0.3179,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.612,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Regan Slater",
                  "matchup_zone": "Left Mid vs Right Back — Wide Channel"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.8248,
                "tackles": 1.8423,
                "tackles_won": 1.1714,
                "clearances": 2.0531,
                "aerial_won": 0.7365,
                "total_shots": 0.6003,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 24.0467,
                "accurate_pass": 21.1551,
                "duels_won": 3.7316,
                "total_long_balls": 1.4458,
                "accurate_long_balls": 1.0551,
                "total_own_half_passes": 12.0156,
                "accurate_own_half_passes": 11.6834,
                "total_opp_half_passes": 12.0311,
                "accurate_opp_half_passes": 9.4717,
                "crosses_total": 1.4458,
                "crosses_accurate": 0.3907,
                "touches": 38.1898,
                "possession_lost": 5.8417,
                "dispossessed": 0.3907,
                "duels_lost": 2.0104,
                "aerial_lost": 0.9553,
                "total_contest": 1.1137,
                "won_contest": 1.1137,
                "ball_recovery": 2.5008,
                "challenges_lost": 0.6642,
                "fouls": 0.0,
                "fouls_drawn": 0.3907,
                "blocks": 0.3907,
                "goal_rate": 0.2824,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0213,
                "expected_assists": 0.1236,
                "shots_on_target": 0.2824,
                "big_chances_created": 0.3907,
                "xgot": 0.1513,
                "ball_carries": 9.964,
                "total_progression": 46.2927,
                "progressive_carries": 2.1686,
                "key_pass": 1.1137,
                "shots_off_target": 0.3179,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.612,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "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.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0893,
                  "after": 0.1236
                }
              ]
            },
            {
              "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": {
                "interceptions": 0.8248,
                "tackles": 1.8423,
                "tackles_won": 1.1714,
                "clearances": 2.0531,
                "aerial_won": 0.7365,
                "total_shots": 0.6003,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 24.0467,
                "accurate_pass": 21.1551,
                "duels_won": 3.7316,
                "total_long_balls": 1.4458,
                "accurate_long_balls": 1.0551,
                "total_own_half_passes": 12.0156,
                "accurate_own_half_passes": 11.6834,
                "total_opp_half_passes": 12.0311,
                "accurate_opp_half_passes": 9.4717,
                "crosses_total": 1.4458,
                "crosses_accurate": 0.3907,
                "touches": 38.1898,
                "possession_lost": 5.8417,
                "dispossessed": 0.3907,
                "duels_lost": 2.0104,
                "aerial_lost": 0.9553,
                "total_contest": 1.1137,
                "won_contest": 1.1137,
                "ball_recovery": 2.5008,
                "challenges_lost": 0.6642,
                "fouls": 0.0,
                "fouls_drawn": 0.3907,
                "blocks": 0.3907,
                "goal_rate": 0.2824,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0213,
                "expected_assists": 0.1236,
                "shots_on_target": 0.2824,
                "big_chances_created": 0.3907,
                "xgot": 0.1513,
                "ball_carries": 9.964,
                "total_progression": 46.2927,
                "progressive_carries": 2.1686,
                "key_pass": 1.1137,
                "shots_off_target": 0.3179,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.612,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "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": 77.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2124,
                "fifa_rank": 1464.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.8248,
                "tackles": 1.8423,
                "tackles_won": 1.1714,
                "clearances": 2.0531,
                "aerial_won": 0.7365,
                "total_shots": 0.6003,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 24.0467,
                "accurate_pass": 21.1551,
                "duels_won": 3.7316,
                "total_long_balls": 1.4458,
                "accurate_long_balls": 1.0551,
                "total_own_half_passes": 12.0156,
                "accurate_own_half_passes": 11.6834,
                "total_opp_half_passes": 12.0311,
                "accurate_opp_half_passes": 9.4717,
                "crosses_total": 1.4458,
                "crosses_accurate": 0.3907,
                "touches": 38.1898,
                "possession_lost": 5.8417,
                "dispossessed": 0.3907,
                "duels_lost": 2.0104,
                "aerial_lost": 0.9553,
                "total_contest": 1.1137,
                "won_contest": 1.1137,
                "ball_recovery": 2.5008,
                "challenges_lost": 0.6642,
                "fouls": 0.0,
                "fouls_drawn": 0.3907,
                "blocks": 0.3907,
                "goal_rate": 0.2824,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0213,
                "expected_assists": 0.1236,
                "shots_on_target": 0.2824,
                "big_chances_created": 0.3907,
                "xgot": 0.1513,
                "ball_carries": 9.964,
                "total_progression": 46.2927,
                "progressive_carries": 2.1686,
                "key_pass": 1.1137,
                "shots_off_target": 0.3179,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.612,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0211,
                "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": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0211,
                "scorer_weight": 0.0266,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0138,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.8248,
                "tackles": 1.8423,
                "tackles_won": 1.1714,
                "clearances": 2.0531,
                "aerial_won": 0.7365,
                "total_shots": 0.6003,
                "rating": 6.6455,
                "minutes": 86.28,
                "total_pass": 24.0467,
                "accurate_pass": 21.1551,
                "duels_won": 3.7316,
                "total_long_balls": 1.4458,
                "accurate_long_balls": 1.0551,
                "total_own_half_passes": 12.0156,
                "accurate_own_half_passes": 11.6834,
                "total_opp_half_passes": 12.0311,
                "accurate_opp_half_passes": 9.4717,
                "crosses_total": 1.4458,
                "crosses_accurate": 0.3907,
                "touches": 38.1898,
                "possession_lost": 5.8417,
                "dispossessed": 0.3907,
                "duels_lost": 2.0104,
                "aerial_lost": 0.9553,
                "total_contest": 1.1137,
                "won_contest": 1.1137,
                "ball_recovery": 2.5008,
                "challenges_lost": 0.6642,
                "fouls": 0.0,
                "fouls_drawn": 0.3907,
                "blocks": 0.3907,
                "goal_rate": 0.2824,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0213,
                "expected_assists": 0.1236,
                "shots_on_target": 0.2824,
                "big_chances_created": 0.3907,
                "xgot": 0.1513,
                "ball_carries": 9.964,
                "total_progression": 46.2927,
                "progressive_carries": 2.1686,
                "key_pass": 1.1137,
                "shots_off_target": 0.3179,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 1.1,
                "defensive_success_rate": 0.612,
                "opponent_faced": "Regan Slater",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0211,
                "projected_assists": 0,
                "assist_probability": 0.1163,
                "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.1163,
                "provider_weight": 0.0989,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0957,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jordan Pickford": {
          "player_id": 138530,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 185,
          "market_value": 13900000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.0726,
            "rating": 7.0656,
            "minutes": 90,
            "total_pass": 41,
            "accurate_pass": 25,
            "total_long_balls": 22,
            "accurate_long_balls": 7,
            "touches": 51,
            "clearances": 2,
            "ball_recovery": 9,
            "high_claims": 1,
            "punches": 1.0001,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 15.3627,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 20,
            "gk_engine_opponent_lambda": 1.1063,
            "shots_faced": 9.7,
            "expected_saves": 2.37,
            "high_pressure_saves": 0.82,
            "opponent_faced": "Oli McBurnie, Mohamed Belloumi",
            "matchup_zone": "Goalkeeper shot-stopping context",
            "antagonist_source": "defensive_duel",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "finishing_factor": 1.0,
            "creation_factor": 1.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 35,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 4,
                "goals_prevented": 0.5304
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 27,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 11,
                "saves": 2,
                "goals_prevented": 0.2497
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 31,
                "ball_recovery": 12,
                "saves": 1,
                "goals_prevented": -1.067
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 13,
                "clearances": 4,
                "duels_won": 3,
                "ball_recovery": 11,
                "saves": 4,
                "goals_prevented": 0.8975
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0164,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 21,
                "ball_recovery": 12,
                "saves": 4,
                "goals_prevented": 0.9406
              },
              "has_player_stats": true,
              "league_name": "Premier 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": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0329,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 30,
                "clearances": 3,
                "ball_recovery": 7,
                "saves": 1,
                "goals_prevented": -0.2288
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_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": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0022,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 23,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 12,
                "goals_prevented": -1.7228
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0083,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 16,
                "clearances": 2,
                "ball_recovery": 7,
                "saves": 6,
                "goals_prevented": 1.4139
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 20,
                "key_pass": 1,
                "clearances": 2,
                "ball_recovery": 11,
                "saves": 1,
                "goals_prevented": -0.7883
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0135,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 24,
                "ball_recovery": 6,
                "saves": 1,
                "goals_prevented": -0.1246
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 96,
            "combined_rank_score": 93.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 49.0,
            "sofascore_rating": 7.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 137.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0656,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jordan Pickford",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Abduvokhid Nematov",
                  "ranking": 91
                },
                {
                  "player_name": "Ignacio Suárez",
                  "ranking": 92
                },
                {
                  "player_name": "Carlos Dotor",
                  "ranking": 93
                },
                {
                  "player_name": "Cristhian Martínez",
                  "ranking": 94
                },
                {
                  "player_name": "Luka Stankovski",
                  "ranking": 95
                }
              ],
              "lower": [
                {
                  "player_name": "Luke Brattan",
                  "ranking": 97
                },
                {
                  "player_name": "Moisés Caicedo",
                  "ranking": 98
                },
                {
                  "player_name": "Danrlei",
                  "ranking": 99
                },
                {
                  "player_name": "Bruno Guimarães",
                  "ranking": 100
                },
                {
                  "player_name": "Sandro Tonali",
                  "ranking": 101
                }
              ]
            }
          },
          "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.0019,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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, Everton, 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.9811,
                "goals_prevented": 0.0725,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6215,
                "accurate_pass": 25.43,
                "total_long_balls": 22.2825,
                "accurate_long_balls": 7.3779,
                "touches": 50.7282,
                "clearances": 1.5093,
                "ball_recovery": 9.3367,
                "high_claims": 0.7933,
                "punches": 0.9982,
                "aerial_won": 0.1926,
                "sweeper_actions": 1.2644,
                "sweeper_accurate": 1.2638,
                "saves_inside_box": 1.7404,
                "possession_lost": 15.3336,
                "duels_won": 0.784,
                "duels_lost": 0.0267,
                "total_contest": 0.1276,
                "won_contest": 0.1276,
                "fouls": 0.0251,
                "fouls_drawn": 0.4523,
                "total_own_half_passes": 21.6917,
                "accurate_own_half_passes": 19.9839
              },
              "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": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 0.9489,
                  "distribution_accuracy": 0.9202,
                  "sweeper_accuracy": 0.6755,
                  "goalkeeperValueNormalized": 0.1336,
                  "save_contribution": 2.7143,
                  "accurateKeeperSweeper": 1.264
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.9810800552368164,
                    "model_output": 2.9811,
                    "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": "passValueNormalized",
                          "contribution": -0.0457
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0177
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0176
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0175
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0164
                        }
                      ],
                      "others": 0.0618,
                      "total": 2.9811,
                      "log_link": true,
                      "margin_base": 1.074537,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": -0.015726
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.00613
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.006034
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": 0.005994
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.005589
                        }
                      ],
                      "others_margin": 0.020905
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.07249373197555542,
                    "model_output": 0.0725,
                    "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.0296
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0293
                        },
                        {
                          "name": "commanding_index",
                          "contribution": 0.0184
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": 0.0174
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0134
                        }
                      ],
                      "others": 0.0396,
                      "total": 0.0725,
                      "log_link": false,
                      "margin_base": -0.016613,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.029563
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.029288
                        },
                        {
                          "name": "commanding_index",
                          "margin": 0.018409
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": 0.017384
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.013393
                        }
                      ],
                      "others_margin": 0.039644
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.065640926361084,
                    "model_output": 7.0656,
                    "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.0219
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0216
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0174
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0172
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": 0.0169
                        }
                      ],
                      "others": 0.0053,
                      "total": 7.0656,
                      "log_link": false,
                      "margin_base": 7.009122,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": -0.021906
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.021566
                        },
                        {
                          "name": "touches",
                          "margin": 0.0174
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.017154
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": 0.016895
                        }
                      ],
                      "others_margin": 0.00541
                    }
                  }
                ],
                "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.0019, quality 0.567)",
              "stats": {
                "saves": 2.9867,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0251,
                "fouls_drawn": 0.4532,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219
              },
              "params": {
                "market_value_eur": 13900000,
                "quality_factor": 0.5671,
                "boost_factor": 1.0019,
                "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.9958,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0249,
                "fouls_drawn": 0.4626,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219
              },
              "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": "Everton"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.4532,
                  "after": 0.4626
                },
                {
                  "stat": "saves",
                  "before": 2.9867,
                  "after": 2.9958
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.9958,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0249,
                "fouls_drawn": 0.4626,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219
              },
              "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.9958,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0249,
                "fouls_drawn": 0.4626,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219,
                "gk_engine_opponent_lambda": 1.1063,
                "shots_faced": 10.5,
                "expected_saves": 2.57,
                "high_pressure_saves": 0.89,
                "opponent_faced": "Oli McBurnie, Mohamed Belloumi",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Oli McBurnie, Mohamed Belloumi",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.1063
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "saves": 2.9958,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0249,
                "fouls_drawn": 0.4626,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219,
                "gk_engine_opponent_lambda": 1.1063,
                "shots_faced": 9.7,
                "expected_saves": 2.37,
                "high_pressure_saves": 0.82,
                "opponent_faced": "Oli McBurnie, Mohamed Belloumi",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 10.5,
                  "after": 9.7
                },
                {
                  "stat": "expected_saves",
                  "before": 2.57,
                  "after": 2.37
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 0.89,
                  "after": 0.82
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 3 by projected rating, fifa_overall 85.0; not used by the projection)",
              "stats": {
                "saves": 2.9958,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0249,
                "fouls_drawn": 0.4626,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219,
                "gk_engine_opponent_lambda": 1.1063,
                "shots_faced": 9.7,
                "expected_saves": 2.37,
                "high_pressure_saves": 0.82,
                "opponent_faced": "Oli McBurnie, Mohamed Belloumi",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 85.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": 96,
                "fifa_rank": 137.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": {
                "saves": 2.9958,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0249,
                "fouls_drawn": 0.4626,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219,
                "gk_engine_opponent_lambda": 1.1063,
                "shots_faced": 9.7,
                "expected_saves": 2.37,
                "high_pressure_saves": 0.82,
                "opponent_faced": "Oli McBurnie, Mohamed Belloumi",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 85.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.9958,
                "goals_prevented": 0.0726,
                "rating": 7.0656,
                "minutes": 90.0,
                "total_pass": 40.6987,
                "accurate_pass": 25.4783,
                "total_long_balls": 22.3248,
                "accurate_long_balls": 7.3919,
                "touches": 50.8246,
                "clearances": 1.5122,
                "ball_recovery": 9.3544,
                "high_claims": 0.7948,
                "punches": 1.0001,
                "aerial_won": 0.193,
                "sweeper_actions": 1.2668,
                "sweeper_accurate": 1.2662,
                "saves_inside_box": 1.7437,
                "possession_lost": 15.3627,
                "duels_won": 0.7855,
                "duels_lost": 0.0268,
                "total_contest": 0.1278,
                "won_contest": 0.1278,
                "fouls": 0.0249,
                "fouls_drawn": 0.4626,
                "total_own_half_passes": 21.7329,
                "accurate_own_half_passes": 20.0219,
                "gk_engine_opponent_lambda": 1.1063,
                "shots_faced": 9.7,
                "expected_saves": 2.37,
                "high_pressure_saves": 0.82,
                "opponent_faced": "Oli McBurnie, Mohamed Belloumi",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "defensive_duel",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 85.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Vitaliy Mykolenko": {
          "player_id": 876643,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 16,
          "height": 180,
          "market_value": 26000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7597,
            "minutes": 90,
            "total_pass": 41,
            "accurate_pass": 34,
            "duels_won": 5,
            "total_long_balls": 5,
            "accurate_long_balls": 1,
            "total_own_half_passes": 19,
            "accurate_own_half_passes": 17,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 17,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 67,
            "possession_lost": 14.6921,
            "dispossessed": 0.2076,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 5,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0095,
            "assists": 0,
            "expected_goals": 0.01,
            "expected_assists": 0.0536,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0008,
            "ball_carries": 12,
            "total_progression": 33,
            "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.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Sorba Thomas",
            "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.01,
            "projected_assists": 0,
            "assist_probability": 0.0522,
            "finishing_factor": 0.8636,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.044,
                "expected_assists": 0.0231,
                "total_shots": 1,
                "total_pass": 67,
                "accurate_pass": 57,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0675,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 7,
                "tackles_won": 7,
                "interceptions": 3,
                "clearances": 1,
                "aerial_won": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0098,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 35,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0056,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 23,
                "tackles": 1,
                "interceptions": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0478,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 33,
                "key_pass": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023967,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0145,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 33,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "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": "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": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0253,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 33,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0706,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0052,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 18,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0105,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 37,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 2376,
            "combined_rank_score": 858.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1424.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7597,
            "source_file": "data/player_rankings.csv",
            "player_name": "Vitaliy Mykolenko",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kaheim Dixon",
                  "ranking": 2371
                },
                {
                  "player_name": "Alejandro Mestanza",
                  "ranking": 2372
                },
                {
                  "player_name": "Eun-gyul Eo",
                  "ranking": 2373
                },
                {
                  "player_name": "Bogdan Mykhaylichenko",
                  "ranking": 2374
                },
                {
                  "player_name": "Lewis Ferguson",
                  "ranking": 2375
                }
              ],
              "lower": [
                {
                  "player_name": "Douglas Luiz",
                  "ranking": 2377
                },
                {
                  "player_name": "Bayron Oyarzo",
                  "ranking": 2378
                },
                {
                  "player_name": "Ignacio Mesías",
                  "ranking": 2379
                },
                {
                  "player_name": "Virgiliu Postolachi",
                  "ranking": 2380
                },
                {
                  "player_name": "Jung Se-jun",
                  "ranking": 2381
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 38,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 38,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0063,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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 38 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Everton, 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.0841,
                "tackles": 2.185,
                "tackles_won": 1.4945,
                "clearances": 2.9524,
                "aerial_won": 1.3494,
                "total_shots": 0.4062,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.1387,
                "accurate_pass": 33.8248,
                "duels_won": 5.281,
                "total_long_balls": 4.751,
                "accurate_long_balls": 1.3446,
                "total_own_half_passes": 18.5812,
                "accurate_own_half_passes": 16.5834,
                "total_opp_half_passes": 22.5575,
                "accurate_opp_half_passes": 17.2414,
                "crosses_total": 2.4709,
                "crosses_accurate": 0.3647,
                "touches": 66.2398,
                "possession_lost": 14.6001,
                "dispossessed": 0.2063,
                "duels_lost": 3.7542,
                "aerial_lost": 1.1495,
                "total_contest": 0.8102,
                "won_contest": 0.3129,
                "ball_recovery": 4.7869,
                "challenges_lost": 1.2153,
                "fouls": 0.69,
                "fouls_drawn": 0.648,
                "blocks": 0.5767,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0079,
                "expected_assists": 0.0385,
                "shots_on_target": 0.0078,
                "big_chances_created": 0.0006,
                "xgot": 0.0006,
                "ball_carries": 11.5622,
                "total_progression": 32.8726,
                "progressive_carries": 0.7017,
                "key_pass": 0.5453,
                "shots_off_target": 0.3984
              },
              "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": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.1367,
                  "aerialWon": 1.8511,
                  "totalClearance_p90": 3.1376,
                  "totalTackle": 2.5475,
                  "totalPass": 41.1387
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0840556621551514,
                    "model_output": 1.0841,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.3029
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0395
                      },
                      {
                        "name": "touches",
                        "importance": 0.0282
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0236
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0208
                      }
                    ],
                    "decomposition": {
                      "base": 0.8573,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1064
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0662
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.018
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0168
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0134
                        }
                      ],
                      "others": 0.0396,
                      "total": 1.0841,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.116949
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.066438
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.017365
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.016204
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.012924
                        }
                      ],
                      "others_margin": 0.037236
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.1850266456604004,
                    "model_output": 2.185,
                    "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.2038
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0971
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1007
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0968
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0847
                        }
                      ],
                      "others": 0.208,
                      "total": 2.185,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.136438
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.058976
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.057708
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.052522
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.04377
                        }
                      ],
                      "others_margin": 0.100125
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.49445378780365,
                    "model_output": 1.4945,
                    "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.1283
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0921
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0993
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1079
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0551
                        }
                      ],
                      "others": 0.1574,
                      "total": 1.4945,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.139866
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.089554
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.08835
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.087905
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.042114
                        }
                      ],
                      "others_margin": 0.111385
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.9524080753326416,
                    "model_output": 2.9524,
                    "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.4267
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.3376
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2802
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2539
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.13
                        }
                      ],
                      "others": -0.184,
                      "total": 2.9524,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.116576
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.091087
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.082437
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.081071
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.042321
                        }
                      ],
                      "others_margin": -0.060465
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.3494499921798706,
                    "model_output": 1.3494,
                    "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.183
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1046
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0778
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0495
                        }
                      ],
                      "others": -0.2171,
                      "total": 1.3495,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.15609
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.107295
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.05994
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.047045
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.031133
                        }
                      ],
                      "others_margin": -0.149123
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4061708450317383,
                    "model_output": 0.4062,
                    "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.1278
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0559
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0145
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0125
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0093,
                      "total": 0.4062,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.127837
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.055922
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.01451
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.012466
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.010714
                        }
                      ],
                      "others_margin": -0.009308
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.759663105010986,
                    "model_output": 6.7597,
                    "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",
                          "contribution": 0.0202
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0148
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0114
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0112
                        }
                      ],
                      "others": -0.0183,
                      "total": 6.7597,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "touches",
                          "margin": 0.02019
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.014754
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.012273
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.011407
                        },
                        {
                          "name": "rating",
                          "margin": 0.011208
                        }
                      ],
                      "others_margin": -0.018434
                    }
                  }
                ],
                "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.0063, quality 0.686)",
              "stats": {
                "interceptions": 1.0909,
                "tackles": 2.1988,
                "tackles_won": 1.5039,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4088,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4865,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6943,
                "fouls_drawn": 0.6521,
                "blocks": 0.5803,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0096,
                "assist_rate": 0.0096,
                "expected_goals": 0.0079,
                "expected_assists": 0.0387,
                "shots_on_target": 0.0078,
                "big_chances_created": 0.0006,
                "xgot": 0.0006,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0063,
                "reference_quality": 0.505,
                "history_matches": 38,
                "history_shrink": 0.1163,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0101)",
              "stats": {
                "interceptions": 1.0849,
                "tackles": 2.1988,
                "tackles_won": 1.4887,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4047,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4766,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6923,
                "fouls_drawn": 0.6556,
                "blocks": 0.5803,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0079,
                "expected_assists": 0.0387,
                "shots_on_target": 0.0077,
                "big_chances_created": 0.0006,
                "xgot": 0.0006,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009
              },
              "params": {
                "blend_weight": 0.0101,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9993,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.5039,
                  "after": 1.4887
                },
                {
                  "stat": "totalCross",
                  "before": 2.4865,
                  "after": 2.4766
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.0909,
                  "after": 1.0849
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0849,
                "tackles": 2.1988,
                "tackles_won": 1.4887,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4086,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4766,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6923,
                "fouls_drawn": 0.6556,
                "blocks": 0.5803,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0079,
                "expected_assists": 0.0387,
                "shots_on_target": 0.0077,
                "big_chances_created": 0.0006,
                "xgot": 0.0006,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009
              },
              "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.0849,
                "tackles": 2.1988,
                "tackles_won": 1.4887,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4086,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4766,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6923,
                "fouls_drawn": 0.6556,
                "blocks": 0.5803,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.0079,
                "expected_assists": 0.0387,
                "shots_on_target": 0.0077,
                "big_chances_created": 0.0006,
                "xgot": 0.0006,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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": "Sorba Thomas",
                  "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.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.0849,
                "tackles": 2.1988,
                "tackles_won": 1.4887,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4086,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4766,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6923,
                "fouls_drawn": 0.6556,
                "blocks": 0.5803,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.01,
                "expected_assists": 0.0536,
                "shots_on_target": 0.0077,
                "big_chances_created": 0.0006,
                "xgot": 0.0008,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.8636,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0387,
                  "after": 0.0536
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 9 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "interceptions": 1.0849,
                "tackles": 2.1988,
                "tackles_won": 1.4887,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4086,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4766,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6923,
                "fouls_drawn": 0.6556,
                "blocks": 0.5803,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.01,
                "expected_assists": 0.0536,
                "shots_on_target": 0.0077,
                "big_chances_created": 0.0006,
                "xgot": 0.0008,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.8636,
                "creation_factor": 0.8,
                "fifa_overall": 77.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": 2376,
                "fifa_rank": 1424.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0849,
                "tackles": 2.1988,
                "tackles_won": 1.4887,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4086,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4766,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6923,
                "fouls_drawn": 0.6556,
                "blocks": 0.5803,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.01,
                "expected_assists": 0.0536,
                "shots_on_target": 0.0077,
                "big_chances_created": 0.0006,
                "xgot": 0.0008,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.01,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8636,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.01,
                "scorer_weight": 0.0086,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0045,
                "finishing_factor": 0.8636,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.0849,
                "tackles": 2.1988,
                "tackles_won": 1.4887,
                "clearances": 2.971,
                "aerial_won": 1.358,
                "total_shots": 0.4086,
                "rating": 6.7597,
                "minutes": 89.94,
                "total_pass": 41.3979,
                "accurate_pass": 34.0379,
                "duels_won": 5.3143,
                "total_long_balls": 4.7809,
                "accurate_long_balls": 1.3531,
                "total_own_half_passes": 18.6983,
                "accurate_own_half_passes": 16.6879,
                "total_opp_half_passes": 22.6996,
                "accurate_opp_half_passes": 17.35,
                "crosses_total": 2.4766,
                "crosses_accurate": 0.367,
                "touches": 66.6571,
                "possession_lost": 14.6921,
                "dispossessed": 0.2076,
                "duels_lost": 3.7779,
                "aerial_lost": 1.1567,
                "total_contest": 0.8153,
                "won_contest": 0.3149,
                "ball_recovery": 4.8171,
                "challenges_lost": 1.223,
                "fouls": 0.6923,
                "fouls_drawn": 0.6556,
                "blocks": 0.5803,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.01,
                "expected_assists": 0.0536,
                "shots_on_target": 0.0077,
                "big_chances_created": 0.0006,
                "xgot": 0.0008,
                "ball_carries": 11.635,
                "total_progression": 33.0797,
                "progressive_carries": 0.7061,
                "key_pass": 0.5487,
                "shots_off_target": 0.4009,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Sorba Thomas",
                "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.01,
                "projected_assists": 0,
                "assist_probability": 0.0522,
                "finishing_factor": 0.8636,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0522,
                "provider_weight": 0.0429,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0415,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Mark Travers": {
          "player_id": 856720,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 12,
          "height": 191,
          "market_value": 2800000,
          "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.254,
            "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": 72.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4093,
            "combined_rank_score": 2074.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3940.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mark Travers",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alfredo Morelos",
                  "ranking": 4088
                },
                {
                  "player_name": "Éverton Ribeiro",
                  "ranking": 4089
                },
                {
                  "player_name": "Vítězslav Jaroš",
                  "ranking": 4090
                },
                {
                  "player_name": "Willian José",
                  "ranking": 4091
                },
                {
                  "player_name": "Hwang Hee-chan",
                  "ranking": 4092
                }
              ],
              "lower": [
                {
                  "player_name": "Michael Svoboda",
                  "ranking": 4094
                },
                {
                  "player_name": "Romeo Vermant",
                  "ranking": 4095
                },
                {
                  "player_name": "Kaine Kesler-Hayden",
                  "ranking": 4096
                },
                {
                  "player_name": "Luke Woolfenden",
                  "ranking": 4097
                },
                {
                  "player_name": "Adam Smith",
                  "ranking": 4098
                }
              ]
            }
          },
          "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": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection from market-value prior (€2,800,000) scaled to 4.4 expected mins; FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.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": 2800000,
                "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.254,
                "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 7 by projected rating, fifa_overall 72.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.254,
                "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": 72.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4093,
                "fifa_rank": 3940.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            }
          ]
        },
        "Jake O'Brien": {
          "player_id": 998253,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 197,
          "market_value": 16500000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.6035,
            "minutes": 14,
            "total_pass": 4,
            "accurate_pass": 3,
            "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": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 7,
            "possession_lost": 2.0682,
            "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.0007,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.327,
            "bench_expected_minutes": 14.2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "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": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 8,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 15,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023967,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 62,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0197,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 4,
                "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": "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": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 88,
                "rating": 5.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.563,
                "expected_assists": 0.0052,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0078,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 3,
                "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": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2024,
                "expected_assists": 0.0008,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 11,
                "accurate_pass": 5,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 5,
                "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": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 65,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0509,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025035,
              "match_date": "2026-04-19",
              "home_team": "Everton",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0627,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 18,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 6,
                "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": 14025022,
              "match_date": "2026-04-11",
              "home_team": "Brentford",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1064,
                "expected_assists": 0.0148,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 26,
                "accurate_pass": 24,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 4,
                "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": 14024017,
              "match_date": "2026-03-21",
              "home_team": "Everton",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0099,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3155,
            "combined_rank_score": 1120.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 7.0,
            "fifa_rank": 1795.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6035,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jake O'Brien",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Chemsdine Talbi",
                  "ranking": 3150
                },
                {
                  "player_name": "Nicolás Fernández",
                  "ranking": 3151
                },
                {
                  "player_name": "Michal Sadílek",
                  "ranking": 3152
                },
                {
                  "player_name": "Tammy Abraham",
                  "ranking": 3153
                },
                {
                  "player_name": "Rafa Marín",
                  "ranking": 3154
                }
              ],
              "lower": [
                {
                  "player_name": "Robin Hranáč",
                  "ranking": 3156
                },
                {
                  "player_name": "Jhon Durán",
                  "ranking": 3157
                },
                {
                  "player_name": "Unai López",
                  "ranking": 3158
                },
                {
                  "player_name": "Clément Lenglet",
                  "ranking": 3159
                },
                {
                  "player_name": "Albion Rrahmani",
                  "ranking": 3160
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 39,
          "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": 39,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 14.19737481061636,
            "bench_appearance_prob": 0.3271534004825618,
            "market_value_adjustment": 1.0031,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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 (39 historical appearances) to 14.2 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 D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.2925,
                "tackles": 0.5088,
                "tackles_won": 0.3145,
                "clearances": 1.0792,
                "aerial_won": 0.7055,
                "total_shots": 0.164,
                "rating": 6.6035,
                "minutes": 23.46,
                "total_pass": 5.994,
                "accurate_pass": 4.3669,
                "duels_won": 1.1336,
                "total_long_balls": 1.6271,
                "accurate_long_balls": 0.6802,
                "total_own_half_passes": 3.7608,
                "accurate_own_half_passes": 2.8139,
                "total_opp_half_passes": 2.2333,
                "accurate_opp_half_passes": 1.5531,
                "crosses_total": 0.1927,
                "crosses_accurate": 0.0,
                "touches": 10.9015,
                "possession_lost": 3.4069,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.4535,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0012,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8426,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.164
              },
              "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": "Ipswich Town",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1503,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 5.4
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.6683,
                  "aerialWon": 2.3292,
                  "totalClearance_p90": 5.0898,
                  "totalTackle": 1.0163,
                  "totalPass": 18.0936
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.29246827960014343,
                    "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.4583
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0533
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0119
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0099
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.022,
                      "total": 0.2925,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.764891
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.1435
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.035088
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.029997
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.029568
                        }
                      ],
                      "others_margin": -0.072356
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5087958574295044,
                    "model_output": 0.5088,
                    "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.7571
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.026
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0185
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0159
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0131
                        }
                      ],
                      "others": -0.0545,
                      "total": 0.5088,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.783494
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.041626
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.030822
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.027232
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.023074
                        }
                      ],
                      "others_margin": -0.101549
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3144540786743164,
                    "model_output": 0.3145,
                    "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.4429
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0155
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0127
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.011
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0488,
                      "total": 0.3145,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.73057
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.038378
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": -0.032691
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.029252
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.024456
                        }
                      ],
                      "others_margin": -0.144155
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.0792316198349,
                    "model_output": 1.0792,
                    "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.2516
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.1578
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.051
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0503
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0479
                        }
                      ],
                      "others": -0.0162,
                      "total": 1.0792,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.05663
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.141023
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.047829
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044955
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.042813
                        }
                      ],
                      "others_margin": -0.014851
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7054765820503235,
                    "model_output": 0.7055,
                    "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.8228
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1782
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.06
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0246
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0222
                        }
                      ],
                      "others": 0.0749,
                      "total": 0.7055,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.904785
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.276607
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.084915
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.037047
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.034583
                        }
                      ],
                      "others_margin": 0.112289
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.16396042704582214,
                    "model_output": 0.164,
                    "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.2018
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0457
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0286
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0113
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0102
                        }
                      ],
                      "others": -0.0299,
                      "total": 0.164,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.201757
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.045691
                        },
                        {
                          "name": "rating",
                          "margin": -0.028553
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.011289
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.010176
                        }
                      ],
                      "others_margin": -0.030057
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.603490352630615,
                    "model_output": 6.6035,
                    "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.0331
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0235
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0161
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0161
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0147
                        }
                      ],
                      "others": -0.0781,
                      "total": 6.6035,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.033131
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.023524
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.016132
                        },
                        {
                          "name": "touches",
                          "margin": -0.016104
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014705
                        }
                      ],
                      "others_margin": -0.078045
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 39,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0031, quality 0.595)",
              "stats": {
                "interceptions": 0.2934,
                "tackles": 0.5104,
                "tackles_won": 0.3154,
                "clearances": 1.0826,
                "aerial_won": 0.7077,
                "total_shots": 0.1645,
                "rating": 6.6035,
                "minutes": 23.46,
                "total_pass": 6.0126,
                "accurate_pass": 4.3804,
                "duels_won": 1.1371,
                "total_long_balls": 1.6321,
                "accurate_long_balls": 0.6823,
                "total_own_half_passes": 3.7725,
                "accurate_own_half_passes": 2.8226,
                "total_opp_half_passes": 2.2402,
                "accurate_opp_half_passes": 1.5579,
                "crosses_total": 0.1933,
                "crosses_accurate": 0.0,
                "touches": 10.9353,
                "possession_lost": 3.4175,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 1.458,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0012,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8483,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1645
              },
              "params": {
                "market_value_eur": 16500000,
                "quality_factor": 0.5953,
                "boost_factor": 1.0031,
                "reference_quality": 0.505,
                "history_matches": 39,
                "history_shrink": 0.1136,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.5 to 14.2 expected minutes (appearance prob 0.33)",
              "stats": {
                "interceptions": 0.1776,
                "tackles": 0.3089,
                "tackles_won": 0.1909,
                "clearances": 0.6552,
                "aerial_won": 0.4283,
                "total_shots": 0.0996,
                "rating": 6.6035,
                "minutes": 14.2,
                "total_pass": 3.6387,
                "accurate_pass": 2.6509,
                "duels_won": 0.6881,
                "total_long_balls": 0.9877,
                "accurate_long_balls": 0.4129,
                "total_own_half_passes": 2.283,
                "accurate_own_half_passes": 1.7082,
                "total_opp_half_passes": 1.3557,
                "accurate_opp_half_passes": 0.9428,
                "crosses_total": 0.117,
                "crosses_accurate": 0.0,
                "touches": 6.6178,
                "possession_lost": 2.0682,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8823,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0007,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1185,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0996,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 14.2
              },
              "params": {
                "expected_minutes": 14.2,
                "projection_minutes": 23.46,
                "minutes_scale": 0.6052,
                "appearance_probability": 0.327
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1776,
                "tackles": 0.3089,
                "tackles_won": 0.1909,
                "clearances": 0.6552,
                "aerial_won": 0.4283,
                "total_shots": 0.0996,
                "rating": 6.6035,
                "minutes": 14.2,
                "total_pass": 3.6387,
                "accurate_pass": 2.6509,
                "duels_won": 0.6881,
                "total_long_balls": 0.9877,
                "accurate_long_balls": 0.4129,
                "total_own_half_passes": 2.283,
                "accurate_own_half_passes": 1.7082,
                "total_opp_half_passes": 1.3557,
                "accurate_opp_half_passes": 0.9428,
                "crosses_total": 0.117,
                "crosses_accurate": 0.0,
                "touches": 6.6178,
                "possession_lost": 2.0682,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8823,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0007,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1185,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0996,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 14.2
              },
              "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.1776,
                "tackles": 0.3089,
                "tackles_won": 0.1909,
                "clearances": 0.6552,
                "aerial_won": 0.4283,
                "total_shots": 0.0996,
                "rating": 6.6035,
                "minutes": 14.2,
                "total_pass": 3.6387,
                "accurate_pass": 2.6509,
                "duels_won": 0.6881,
                "total_long_balls": 0.9877,
                "accurate_long_balls": 0.4129,
                "total_own_half_passes": 2.283,
                "accurate_own_half_passes": 1.7082,
                "total_opp_half_passes": 1.3557,
                "accurate_opp_half_passes": 0.9428,
                "crosses_total": 0.117,
                "crosses_accurate": 0.0,
                "touches": 6.6178,
                "possession_lost": 2.0682,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8823,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0007,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1185,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0996,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 14.2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.327,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 17 by projected rating, fifa_overall 76.0; not used by the projection)",
              "stats": {
                "interceptions": 0.1776,
                "tackles": 0.3089,
                "tackles_won": 0.1909,
                "clearances": 0.6552,
                "aerial_won": 0.4283,
                "total_shots": 0.0996,
                "rating": 6.6035,
                "minutes": 14.2,
                "total_pass": 3.6387,
                "accurate_pass": 2.6509,
                "duels_won": 0.6881,
                "total_long_balls": 0.9877,
                "accurate_long_balls": 0.4129,
                "total_own_half_passes": 2.283,
                "accurate_own_half_passes": 1.7082,
                "total_opp_half_passes": 1.3557,
                "accurate_opp_half_passes": 0.9428,
                "crosses_total": 0.117,
                "crosses_accurate": 0.0,
                "touches": 6.6178,
                "possession_lost": 2.0682,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8823,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0007,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.1185,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0996,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 14.2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3155,
                "fifa_rank": 1795.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Nathan Patterson": {
          "player_id": 1020141,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 2,
          "height": 189,
          "market_value": 10900000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7086,
            "minutes": 14,
            "total_pass": 3,
            "accurate_pass": 1,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 6,
            "possession_lost": 2.8474,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "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.007,
            "expected_assists": 0.0001,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0146,
            "ball_carries": 0,
            "total_progression": 1,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.316,
            "bench_expected_minutes": 13.95,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "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": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "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": 14025128,
              "match_date": "2026-01-31",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 10,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "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"
            },
            {
              "match_id": 15129439,
              "match_date": "2026-01-26",
              "home_team": "Everton",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 71,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0356,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 28,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025064,
              "match_date": "2026-01-18",
              "home_team": "Aston Villa",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 3,
                "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": 14025046,
              "match_date": "2026-01-07",
              "home_team": "Everton",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 13,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "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": 14025268,
              "match_date": "2025-12-30",
              "home_team": "Nottingham Forest",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 72,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 15,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "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": 14025238,
              "match_date": "2025-12-27",
              "home_team": "Burnley",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Burnley",
              "stats": {
                "minutes": 9,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.029,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 2,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 4547,
            "combined_rank_score": 2610.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 471.0,
            "sofascore_rating": 6.8833,
            "sofascore_appearances": 7.0,
            "fifa_rank": 4750.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7086,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nathan Patterson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alex Valera",
                  "ranking": 4542
                },
                {
                  "player_name": "Marcos Fernández",
                  "ranking": 4543
                },
                {
                  "player_name": "Ximo Navarro",
                  "ranking": 4544
                },
                {
                  "player_name": "João Virgínia",
                  "ranking": 4545
                },
                {
                  "player_name": "Dimitri Foulquier",
                  "ranking": 4546
                }
              ],
              "lower": [
                {
                  "player_name": "Isaac Price",
                  "ranking": 4548
                },
                {
                  "player_name": "Andy Irving",
                  "ranking": 4549
                },
                {
                  "player_name": "Abel Ruíz",
                  "ranking": 4550
                },
                {
                  "player_name": "Enzo Copetti",
                  "ranking": 4551
                },
                {
                  "player_name": "Milutin Osmajić",
                  "ranking": 4552
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.688,
          "history_matches": 7,
          "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": 7,
            "data_confidence": 0.688,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 13.950580115654624,
            "bench_appearance_prob": 0.31593545980248294,
            "market_value_adjustment": 1.0035,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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 (7 historical appearances) to 14.0 expected mins (appearance prob 0.32); 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.2948,
                "tackles": 0.5497,
                "tackles_won": 0.312,
                "clearances": 0.8759,
                "aerial_won": 0.4038,
                "total_shots": 0.194,
                "rating": 6.7086,
                "minutes": 11.11,
                "total_pass": 2.033,
                "accurate_pass": 0.993,
                "duels_won": 0.4595,
                "total_long_balls": 0.4595,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.5335,
                "accurate_own_half_passes": 0.5335,
                "total_opp_half_passes": 1.4995,
                "accurate_opp_half_passes": 0.4595,
                "crosses_total": 0.9929,
                "crosses_accurate": 0.0,
                "touches": 4.4453,
                "possession_lost": 2.2597,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2667,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0056,
                "expected_assists": 0.0001,
                "shots_on_target": 0.1927,
                "big_chances_created": 0.0,
                "xgot": 0.0116,
                "ball_carries": 0.1927,
                "total_progression": 0.8499,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0013
              },
              "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-04",
                    "opponent": "Manchester City",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.2208,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-01-31",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1877,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-01-26",
                    "opponent": "Leeds United",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-01-18",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-01-07",
                    "opponent": "Wolverhampton",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1152,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2025-12-30",
                    "opponent": "Nottingham Forest",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2025-12-27",
                    "opponent": "Burnley",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0833,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.2158,
                  "aerialWon": 0.9217,
                  "totalClearance_p90": 22.8224,
                  "totalTackle": 1.3145,
                  "totalPass": 11.6294
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.2948407530784607,
                    "model_output": 0.2948,
                    "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.466
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0535
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.015
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0087
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0066
                        }
                      ],
                      "others": -0.0259,
                      "total": 0.2948,
                      "log_link": true,
                      "margin_base": -0.154,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.784403
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.147152
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.045562
                        },
                        {
                          "name": "touches",
                          "margin": -0.027335
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.020665
                        }
                      ],
                      "others_margin": -0.083534
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5497084856033325,
                    "model_output": 0.5497,
                    "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.759
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0297
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0268
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0192
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0189
                        }
                      ],
                      "others": -0.0878,
                      "total": 0.5497,
                      "log_link": true,
                      "margin_base": 0.332089,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.786388
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.045706
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.041215
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.030552
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.030054
                        }
                      ],
                      "others_margin": -0.14806
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3119986951351166,
                    "model_output": 0.312,
                    "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.451
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.032
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0126
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0108
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0256,
                      "total": 0.312,
                      "log_link": true,
                      "margin_base": -0.157413,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.750549
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.082674
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.034414
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": -0.030601
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.030273
                        }
                      ],
                      "others_margin": -0.078832
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.875861644744873,
                    "model_output": 0.8759,
                    "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.2046
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2045
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1313
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0684
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0314
                        }
                      ],
                      "others": 0.0019,
                      "total": 0.8759,
                      "log_link": true,
                      "margin_base": 1.238783,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.01819
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.179105
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.134584
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07799
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.036595
                        }
                      ],
                      "others_margin": 0.001943
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.4037598967552185,
                    "model_output": 0.4038,
                    "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.8405
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.114
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0426
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0395
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0263
                        }
                      ],
                      "others": -0.0005,
                      "total": 0.4038,
                      "log_link": true,
                      "margin_base": 0.323553,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.936881
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.236427
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.094905
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.087726
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.062927
                        }
                      ],
                      "others_margin": -0.001433
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.19404621422290802,
                    "model_output": 0.194,
                    "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.196
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0706
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0141
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0125
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.01
                        }
                      ],
                      "others": -0.0271,
                      "total": 0.194,
                      "log_link": false,
                      "margin_base": 0.471132,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.196025
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.070595
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.014082
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.012473
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.009993
                        }
                      ],
                      "others_margin": -0.027028
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.708639144897461,
                    "model_output": 6.7086,
                    "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.048
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0297
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0283
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0219
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0179
                        }
                      ],
                      "others": -0.0625,
                      "total": 6.7086,
                      "log_link": false,
                      "margin_base": 6.785131,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.047953
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.029688
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.028288
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.021887
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.017912
                        }
                      ],
                      "others_margin": -0.062492
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 7,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0035, quality 0.533)",
              "stats": {
                "interceptions": 0.2959,
                "tackles": 0.5516,
                "tackles_won": 0.3131,
                "clearances": 0.8789,
                "aerial_won": 0.4052,
                "total_shots": 0.1947,
                "rating": 6.7086,
                "minutes": 11.11,
                "total_pass": 2.0401,
                "accurate_pass": 0.9965,
                "duels_won": 0.4611,
                "total_long_balls": 0.4611,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.5354,
                "accurate_own_half_passes": 0.5354,
                "total_opp_half_passes": 1.5047,
                "accurate_opp_half_passes": 0.4611,
                "crosses_total": 0.9964,
                "crosses_accurate": 0.0,
                "touches": 4.4609,
                "possession_lost": 2.2676,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.2676,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0056,
                "expected_assists": 0.0001,
                "shots_on_target": 0.1934,
                "big_chances_created": 0.0,
                "xgot": 0.0116,
                "ball_carries": 0.1934,
                "total_progression": 0.8529,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0013
              },
              "params": {
                "market_value_eur": 10900000,
                "quality_factor": 0.533,
                "boost_factor": 1.0035,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 11.1 to 14.0 expected minutes (appearance prob 0.32)",
              "stats": {
                "interceptions": 0.3716,
                "tackles": 0.6926,
                "tackles_won": 0.3932,
                "clearances": 1.1036,
                "aerial_won": 0.5088,
                "total_shots": 0.2445,
                "rating": 6.7086,
                "minutes": 13.95,
                "total_pass": 2.5617,
                "accurate_pass": 1.2513,
                "duels_won": 0.579,
                "total_long_balls": 0.579,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.6723,
                "accurate_own_half_passes": 0.6723,
                "total_opp_half_passes": 1.8894,
                "accurate_opp_half_passes": 0.579,
                "crosses_total": 1.2512,
                "crosses_accurate": 0.0,
                "touches": 5.6015,
                "possession_lost": 2.8474,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.336,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.007,
                "expected_assists": 0.0001,
                "shots_on_target": 0.2428,
                "big_chances_created": 0.0,
                "xgot": 0.0146,
                "ball_carries": 0.2428,
                "total_progression": 1.071,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0016,
                "bench_appearance_probability": 0.316,
                "bench_expected_minutes": 13.95
              },
              "params": {
                "expected_minutes": 13.95,
                "projection_minutes": 11.11,
                "minutes_scale": 1.2557,
                "appearance_probability": 0.316
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3716,
                "tackles": 0.6926,
                "tackles_won": 0.3932,
                "clearances": 1.1036,
                "aerial_won": 0.5088,
                "total_shots": 0.2445,
                "rating": 6.7086,
                "minutes": 13.95,
                "total_pass": 2.5617,
                "accurate_pass": 1.2513,
                "duels_won": 0.579,
                "total_long_balls": 0.579,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.6723,
                "accurate_own_half_passes": 0.6723,
                "total_opp_half_passes": 1.8894,
                "accurate_opp_half_passes": 0.579,
                "crosses_total": 1.2512,
                "crosses_accurate": 0.0,
                "touches": 5.6015,
                "possession_lost": 2.8474,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.336,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.007,
                "expected_assists": 0.0001,
                "shots_on_target": 0.2428,
                "big_chances_created": 0.0,
                "xgot": 0.0146,
                "ball_carries": 0.2428,
                "total_progression": 1.071,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0016,
                "bench_appearance_probability": 0.316,
                "bench_expected_minutes": 13.95
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.3716,
                "tackles": 0.6926,
                "tackles_won": 0.3932,
                "clearances": 1.1036,
                "aerial_won": 0.5088,
                "total_shots": 0.2445,
                "rating": 6.7086,
                "minutes": 13.95,
                "total_pass": 2.5617,
                "accurate_pass": 1.2513,
                "duels_won": 0.579,
                "total_long_balls": 0.579,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.6723,
                "accurate_own_half_passes": 0.6723,
                "total_opp_half_passes": 1.8894,
                "accurate_opp_half_passes": 0.579,
                "crosses_total": 1.2512,
                "crosses_accurate": 0.0,
                "touches": 5.6015,
                "possession_lost": 2.8474,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.336,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.007,
                "expected_assists": 0.0001,
                "shots_on_target": 0.2428,
                "big_chances_created": 0.0,
                "xgot": 0.0146,
                "ball_carries": 0.2428,
                "total_progression": 1.071,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0016,
                "bench_appearance_probability": 0.316,
                "bench_expected_minutes": 13.95,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.316,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 12 by projected rating, fifa_overall 71.0; not used by the projection)",
              "stats": {
                "interceptions": 0.3716,
                "tackles": 0.6926,
                "tackles_won": 0.3932,
                "clearances": 1.1036,
                "aerial_won": 0.5088,
                "total_shots": 0.2445,
                "rating": 6.7086,
                "minutes": 13.95,
                "total_pass": 2.5617,
                "accurate_pass": 1.2513,
                "duels_won": 0.579,
                "total_long_balls": 0.579,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 0.6723,
                "accurate_own_half_passes": 0.6723,
                "total_opp_half_passes": 1.8894,
                "accurate_opp_half_passes": 0.579,
                "crosses_total": 1.2512,
                "crosses_accurate": 0.0,
                "touches": 5.6015,
                "possession_lost": 2.8474,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.336,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.007,
                "expected_assists": 0.0001,
                "shots_on_target": 0.2428,
                "big_chances_created": 0.0,
                "xgot": 0.0146,
                "ball_carries": 0.2428,
                "total_progression": 1.071,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0016,
                "bench_appearance_probability": 0.316,
                "bench_expected_minutes": 13.95,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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": 71.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": 4547,
                "fifa_rank": 4750.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            }
          ]
        },
        "Hayden Hackney": {
          "player_id": 1008471,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 178,
          "market_value": 35000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0685,
            "assist_rate": 0.0936,
            "assists": 0,
            "expected_goals": 0.0459,
            "goal_rate": 0.0552,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.6745,
            "minutes": 26,
            "total_pass": 13,
            "accurate_pass": 12,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 3.5658,
            "dispossessed": 0.2351,
            "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": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 28,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.525,
            "bench_expected_minutes": 26.4,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0236,
            "projected_assists": 0,
            "assist_probability": 0.0348,
            "finishing_factor": 1.2204,
            "creation_factor": 1.25,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0195,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_pass": 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": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 15,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0384,
                "expected_assists": 0.0892,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 13,
                "key_pass": 2,
                "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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0115,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 16,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 79,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0098,
                "expected_assists": 0.0091,
                "total_shots": 1,
                "total_pass": 43,
                "accurate_pass": 38,
                "key_pass": 1,
                "tackles": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 2871,
            "combined_rank_score": 970.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1429.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6745,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hayden Hackney",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Miguel Loureiro",
                  "ranking": 2866
                },
                {
                  "player_name": "Saba Sazonov",
                  "ranking": 2867
                },
                {
                  "player_name": "Juan Pablo Nieto",
                  "ranking": 2868
                },
                {
                  "player_name": "Adalid Terrazas",
                  "ranking": 2869
                },
                {
                  "player_name": "Choi Sung-bum",
                  "ranking": 2870
                }
              ],
              "lower": [
                {
                  "player_name": "Marcelino Moreno",
                  "ranking": 2872
                },
                {
                  "player_name": "Dylan Escobar",
                  "ranking": 2873
                },
                {
                  "player_name": "Nicholas Pozo",
                  "ranking": 2874
                },
                {
                  "player_name": "Andreas Malin",
                  "ranking": 2875
                },
                {
                  "player_name": "Jauregizar",
                  "ranking": 2876
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.575,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.575,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.4,
            "bench_appearance_prob": 0.525,
            "market_value_adjustment": 1.037,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 29.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.08
            },
            "rationale": "Bench projection scaled from XGBoost M_service (5 historical appearances) to 26.4 expected mins (appearance prob 0.53); FBref playing time empirical prior: 1.0 sub appearances, 29.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3352,
                "expected_assists": 0.0318,
                "assists": 0.0618,
                "assist_rate": 0.0618,
                "expected_goals": 0.0232,
                "goals": 0.0364,
                "goal_rate": 0.0364,
                "shots_on_target": 0.107,
                "total_shots": 0.3212,
                "rating": 6.6745,
                "minutes": 16.54,
                "total_pass": 8.4188,
                "accurate_pass": 7.7726,
                "duels_won": 0.2267,
                "total_long_balls": 0.2667,
                "accurate_long_balls": 0.2667,
                "total_own_half_passes": 2.9892,
                "accurate_own_half_passes": 2.9892,
                "total_opp_half_passes": 5.4296,
                "accurate_opp_half_passes": 4.7834,
                "crosses_total": 0.8389,
                "crosses_accurate": 0.2267,
                "touches": 12.3503,
                "possession_lost": 2.2924,
                "dispossessed": 0.2267,
                "duels_lost": 1.5065,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1927,
                "tackles_won": 0.0,
                "tackles": 0.2267,
                "clearances": 0.2667,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0131,
                "fouls": 0.2667,
                "fouls_drawn": 0.0,
                "blocks": 0.1927,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.8305,
                "total_progression": 18.1073,
                "progressive_carries": 0.4535,
                "shots_off_target": 0.2141
              },
              "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": "Ipswich Town",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.2696,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.3356,
                  "creative_index": 0.3189,
                  "expectedGoals": 0.0089,
                  "expectedAssists": 0.0251,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3351545035839081,
                    "model_output": 0.3352,
                    "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.4209
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0455
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0286
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0211
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0135
                        }
                      ],
                      "others": -0.0214,
                      "total": 0.3352,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.644331
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.102806
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.070438
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.055362
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.037283
                        }
                      ],
                      "others_margin": -0.062128
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03180359676480293,
                    "model_output": 0.0318,
                    "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.0382
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0069
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0022
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0017
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0017
                        }
                      ],
                      "others": -0.0067,
                      "total": 0.0318,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.589265
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.156145
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.056636
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.045953
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044092
                        }
                      ],
                      "others_margin": -0.188222
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06180046126246452,
                    "model_output": 0.0618,
                    "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.0266
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0089
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0047
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": -0.002,
                      "total": 0.0618,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.374313
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.164139
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.090281
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.082174
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.077018
                        }
                      ],
                      "others_margin": -0.032459
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.02324848249554634,
                    "model_output": 0.0232,
                    "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.0423
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0186
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0061
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0025
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0023
                        }
                      ],
                      "others": -0.004,
                      "total": 0.0232,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.593625
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.439784
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.199218
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.093963
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.087292
                        }
                      ],
                      "others_margin": -0.1623
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03640952333807945,
                    "model_output": 0.0364,
                    "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.0372
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0152
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.008
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0059
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.004
                        }
                      ],
                      "others": -0.0027,
                      "total": 0.0364,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.479987
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.289015
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.19333
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.146276
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.097823
                        }
                      ],
                      "others_margin": -0.072634
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.10704955458641052,
                    "model_output": 0.107,
                    "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.1382
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0484
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0304
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0085
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0073
                        }
                      ],
                      "others": -0.0158,
                      "total": 0.107,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.556316
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.30223
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.250002
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.076518
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.060948
                        }
                      ],
                      "others_margin": -0.136344
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3211660087108612,
                    "model_output": 0.3212,
                    "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.4131
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2168
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0537
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0355
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0307
                        }
                      ],
                      "others": -0.0269,
                      "total": 0.3212,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.413073
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.216752
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.053679
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.035501
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.030679
                        }
                      ],
                      "others_margin": -0.026972
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.674549102783203,
                    "model_output": 6.6745,
                    "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.0858
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0445
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0189
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0075
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0069
                        }
                      ],
                      "others": -0.0108,
                      "total": 6.6745,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.085843
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.044522
                        },
                        {
                          "name": "rating",
                          "margin": -0.018863
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007523
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.006899
                        }
                      ],
                      "others_margin": -0.010671
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0370, quality 0.752)",
              "stats": {
                "key_pass": 0.3476,
                "expected_assists": 0.033,
                "assists": 0.0641,
                "assist_rate": 0.0641,
                "expected_goals": 0.0241,
                "goals": 0.0378,
                "goal_rate": 0.0378,
                "shots_on_target": 0.111,
                "total_shots": 0.333,
                "rating": 6.6745,
                "minutes": 16.54,
                "total_pass": 8.7303,
                "accurate_pass": 8.0602,
                "duels_won": 0.2351,
                "total_long_balls": 0.2766,
                "accurate_long_balls": 0.2766,
                "total_own_half_passes": 3.0998,
                "accurate_own_half_passes": 3.0998,
                "total_opp_half_passes": 5.6305,
                "accurate_opp_half_passes": 4.9604,
                "crosses_total": 0.8699,
                "crosses_accurate": 0.2351,
                "touches": 12.8073,
                "possession_lost": 2.3772,
                "dispossessed": 0.2351,
                "duels_lost": 1.5622,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1998,
                "tackles_won": 0.0,
                "tackles": 0.2351,
                "clearances": 0.2766,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.2766,
                "fouls_drawn": 0.0,
                "blocks": 0.1998,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.9352,
                "total_progression": 18.7773,
                "progressive_carries": 0.4703,
                "shots_off_target": 0.222
              },
              "params": {
                "market_value_eur": 35000000,
                "quality_factor": 0.752,
                "boost_factor": 1.037,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0260)",
              "stats": {
                "key_pass": 0.3476,
                "expected_assists": 0.033,
                "assists": 0.0624,
                "assist_rate": 0.0624,
                "expected_goals": 0.0241,
                "goals": 0.0368,
                "goal_rate": 0.0368,
                "shots_on_target": 0.1081,
                "total_shots": 0.3284,
                "rating": 6.6745,
                "minutes": 16.54,
                "total_pass": 8.7303,
                "accurate_pass": 8.0602,
                "duels_won": 0.2351,
                "total_long_balls": 0.2766,
                "accurate_long_balls": 0.2766,
                "total_own_half_passes": 3.0998,
                "accurate_own_half_passes": 3.0998,
                "total_opp_half_passes": 5.6305,
                "accurate_opp_half_passes": 4.9604,
                "crosses_total": 0.8632,
                "crosses_accurate": 0.2351,
                "touches": 12.8073,
                "possession_lost": 2.3772,
                "dispossessed": 0.2351,
                "duels_lost": 1.5622,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1986,
                "tackles_won": 0.004,
                "tackles": 0.2351,
                "clearances": 0.2766,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.2734,
                "fouls_drawn": 0.0119,
                "blocks": 0.1998,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.9352,
                "total_progression": 18.7773,
                "progressive_carries": 0.4703,
                "shots_off_target": 0.222
              },
              "params": {
                "blend_weight": 0.026,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1838,
                "prior_reliability": 0.08,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.0,
                  "after": 0.0119
                },
                {
                  "stat": "totalCross",
                  "before": 0.8699,
                  "after": 0.8632
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.5 to 26.4 expected minutes (appearance prob 0.53)",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0495,
                "assists": 0.0936,
                "assist_rate": 0.0936,
                "expected_goals": 0.0362,
                "goals": 0.0552,
                "goal_rate": 0.0552,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4
              },
              "params": {
                "expected_minutes": 26.4,
                "projection_minutes": 16.54,
                "minutes_scale": 1.5,
                "appearance_probability": 0.525
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0495,
                "assists": 0.0936,
                "assist_rate": 0.0936,
                "expected_goals": 0.0362,
                "goals": 0.0552,
                "goal_rate": 0.0552,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2204,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 0.525
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0362,
                  "after": 0.0459
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0495,
                  "after": 0.0685
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 14 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2204,
                "creation_factor": 1.25,
                "fifa_overall": 77.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": 2871,
                "fifa_rank": 1429.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.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0236,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2204,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0236,
                "scorer_weight": 0.0294,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0152,
                "finishing_factor": 1.2204,
                "appearance_weight": 0.525,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0236,
                "projected_assists": 0,
                "assist_probability": 0.0348,
                "finishing_factor": 1.2204,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0348,
                "provider_weight": 0.045,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0435,
                "creation_factor": 1.25,
                "appearance_weight": 0.525,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Merlin Röhl": {
          "player_id": 1064082,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 34,
          "height": 191,
          "market_value": 14700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0405,
            "assist_rate": 0.0606,
            "assists": 0,
            "expected_goals": 0.0339,
            "goal_rate": 0.047,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.6829,
            "minutes": 23,
            "total_pass": 7,
            "accurate_pass": 5,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 2,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 4.6232,
            "dispossessed": 0.5734,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "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": 1,
            "total_progression": 9,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.318,
            "bench_expected_minutes": 22.52,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "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": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 75,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1258,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 20,
                "key_pass": 1,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 86,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0107,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 20,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0556,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023967,
              "match_date": "2026-05-24",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 62,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 7,
                "tackles": 2,
                "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": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 88,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0959,
                "expected_assists": 0.0572,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 14,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "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": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 80,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0772,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 89,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0475,
                "expected_assists": 0.0039,
                "total_shots": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 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"
            },
            {
              "match_id": 14024017,
              "match_date": "2026-03-21",
              "home_team": "Everton",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023987,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0361,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "tackles": 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": 14025064,
              "match_date": "2026-01-18",
              "home_team": "Aston Villa",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1287,
                "expected_assists": 0.0192,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3634,
            "combined_rank_score": 1600.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2689.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6829,
            "source_file": "data/player_rankings.csv",
            "player_name": "Merlin Röhl",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Barnabás Varga",
                  "ranking": 3629
                },
                {
                  "player_name": "Mehdi Taremi",
                  "ranking": 3630
                },
                {
                  "player_name": "Lorenzo Pirola",
                  "ranking": 3631
                },
                {
                  "player_name": "Agustín Marchesín",
                  "ranking": 3632
                },
                {
                  "player_name": "Fred",
                  "ranking": 3633
                }
              ],
              "lower": [
                {
                  "player_name": "Paul Onuachu",
                  "ranking": 3635
                },
                {
                  "player_name": "Derek Cornelius",
                  "ranking": 3636
                },
                {
                  "player_name": "Ardian Ismajli",
                  "ranking": 3637
                },
                {
                  "player_name": "Nélson Semedo",
                  "ranking": 3638
                },
                {
                  "player_name": "Jan Kuchta",
                  "ranking": 3639
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 19,
          "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": 19,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.520570049794724,
            "bench_appearance_prob": 0.318,
            "market_value_adjustment": 1.0044,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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.1267
            },
            "rationale": "Bench projection scaled from XGBoost M_service (19 historical appearances) to 22.5 expected mins (appearance prob 0.32); 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.4779,
                "expected_assists": 0.0311,
                "assists": 0.0473,
                "assist_rate": 0.0473,
                "expected_goals": 0.026,
                "goals": 0.0366,
                "goal_rate": 0.0366,
                "shots_on_target": 0.1189,
                "total_shots": 0.367,
                "rating": 6.6829,
                "minutes": 17.36,
                "total_pass": 5.6238,
                "accurate_pass": 3.8842,
                "duels_won": 2.171,
                "total_long_balls": 0.0975,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6271,
                "accurate_own_half_passes": 1.9886,
                "total_opp_half_passes": 2.9967,
                "accurate_opp_half_passes": 1.8956,
                "crosses_total": 0.4145,
                "crosses_accurate": 0.2294,
                "touches": 10.7063,
                "possession_lost": 3.5482,
                "dispossessed": 0.5709,
                "duels_lost": 2.3097,
                "aerial_won": 0.5376,
                "aerial_lost": 0.9796,
                "interceptions": 0.0975,
                "tackles_won": 0.5413,
                "tackles": 1.3101,
                "clearances": 0.1484,
                "total_contest": 0.2622,
                "won_contest": 0.1213,
                "challenges_lost": 0.1197,
                "fouls": 0.4986,
                "fouls_drawn": 0.202,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0599,
                "xgot": 0.0,
                "ball_carries": 0.9277,
                "total_progression": 6.9361,
                "progressive_carries": 0.1069,
                "shots_off_target": 0.2481
              },
              "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-06",
                    "opponent": "Manchester United",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1572,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1336,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1136,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0965,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.082,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0697,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0593,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Chelsea",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0504,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Arsenal",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0428,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-01-18",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0364,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 19.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.4366,
                  "creative_index": 0.2158,
                  "expectedGoals": 0.0222,
                  "expectedAssists": 0.0435,
                  "onTargetScoringAttempt": 0.082
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.47789087891578674,
                    "model_output": 0.4779,
                    "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.3491
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0318
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.027
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0235
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0213
                        }
                      ],
                      "others": -0.0522,
                      "total": 0.4779,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.500753
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.060985
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.052113
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.045244
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.040955
                        }
                      ],
                      "others_margin": -0.103643
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.031069058924913406,
                    "model_output": 0.0311,
                    "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.0368
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0057
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0035
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0024
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0016
                        }
                      ],
                      "others": -0.0079,
                      "total": 0.0311,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.561104
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.122755
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.083323
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.0618
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.041704
                        }
                      ],
                      "others_margin": -0.228217
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.047327399253845215,
                    "model_output": 0.0473,
                    "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.0201
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0058
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.005
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0041
                        }
                      ],
                      "others": -0.0168,
                      "total": 0.0473,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.268849
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.092513
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.081199
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069233
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.065646
                        }
                      ],
                      "others_margin": -0.30451
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.026031436398625374,
                    "model_output": 0.026,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1316
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0794
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0663
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0546
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0244
                      }
                    ],
                    "decomposition": {
                      "base": 0.0944,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0392
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0154
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0039
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0025,
                      "total": 0.026,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.536608
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.326567
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.154038
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.121615
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.058563
                        }
                      ],
                      "others_margin": -0.091142
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.036606237292289734,
                    "model_output": 0.0366,
                    "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.0342
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.014
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0077
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0031
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0026
                        }
                      ],
                      "others": 0.0006,
                      "total": 0.0366,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.430566
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.250078
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.169402
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.077403
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069683
                        }
                      ],
                      "others_margin": 0.01601
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.1189206913113594,
                    "model_output": 0.1189,
                    "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.1395
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0399
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0203
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0126
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0051
                        }
                      ],
                      "others": 0.0021,
                      "total": 0.1189,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.563005
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.24367
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.151041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.106782
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.04455
                        }
                      ],
                      "others_margin": 0.01769
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.36703428626060486,
                    "model_output": 0.367,
                    "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.3533
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1934
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0413
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.029
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0254
                        }
                      ],
                      "others": 0.0189,
                      "total": 0.367,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.353251
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.193441
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.041321
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.028991
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.025405
                        }
                      ],
                      "others_margin": 0.018978
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.682943820953369,
                    "model_output": 6.6829,
                    "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.0647
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0339
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0282
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0144
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0077
                        }
                      ],
                      "others": -0.0171,
                      "total": 6.6829,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.064677
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.033889
                        },
                        {
                          "name": "rating",
                          "margin": -0.028172
                        },
                        {
                          "name": "shotValueNormalized",
                          "margin": -0.014354
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007738
                        }
                      ],
                      "others_margin": -0.017099
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 19,
                  "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.0044, quality 0.576)",
              "stats": {
                "key_pass": 0.48,
                "expected_assists": 0.0312,
                "assists": 0.0475,
                "assist_rate": 0.0475,
                "expected_goals": 0.0261,
                "goals": 0.0368,
                "goal_rate": 0.0368,
                "shots_on_target": 0.1194,
                "total_shots": 0.3686,
                "rating": 6.6829,
                "minutes": 17.36,
                "total_pass": 5.6485,
                "accurate_pass": 3.9013,
                "duels_won": 2.1806,
                "total_long_balls": 0.0979,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6387,
                "accurate_own_half_passes": 1.9973,
                "total_opp_half_passes": 3.0099,
                "accurate_opp_half_passes": 1.9039,
                "crosses_total": 0.4163,
                "crosses_accurate": 0.2304,
                "touches": 10.7534,
                "possession_lost": 3.5638,
                "dispossessed": 0.5734,
                "duels_lost": 2.3199,
                "aerial_won": 0.54,
                "aerial_lost": 0.9839,
                "interceptions": 0.0979,
                "tackles_won": 0.5437,
                "tackles": 1.3159,
                "clearances": 0.1491,
                "total_contest": 0.2634,
                "won_contest": 0.1218,
                "challenges_lost": 0.1202,
                "fouls": 0.5008,
                "fouls_drawn": 0.2029,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0602,
                "xgot": 0.0,
                "ball_carries": 0.9318,
                "total_progression": 6.9666,
                "progressive_carries": 0.1074,
                "shots_off_target": 0.2492
              },
              "params": {
                "market_value_eur": 14700000,
                "quality_factor": 0.5759,
                "boost_factor": 1.0044,
                "reference_quality": 0.505,
                "history_matches": 19,
                "history_shrink": 0.2083,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0172)",
              "stats": {
                "key_pass": 0.48,
                "expected_assists": 0.0312,
                "assists": 0.0467,
                "assist_rate": 0.0467,
                "expected_goals": 0.0261,
                "goals": 0.0362,
                "goal_rate": 0.0362,
                "shots_on_target": 0.1174,
                "total_shots": 0.3623,
                "rating": 6.6829,
                "minutes": 17.36,
                "total_pass": 5.6485,
                "accurate_pass": 3.9013,
                "duels_won": 2.1806,
                "total_long_balls": 0.0979,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6387,
                "accurate_own_half_passes": 1.9973,
                "total_opp_half_passes": 3.0099,
                "accurate_opp_half_passes": 1.9039,
                "crosses_total": 0.4179,
                "crosses_accurate": 0.2304,
                "touches": 10.7534,
                "possession_lost": 3.5638,
                "dispossessed": 0.5734,
                "duels_lost": 2.3199,
                "aerial_won": 0.54,
                "aerial_lost": 0.9839,
                "interceptions": 0.098,
                "tackles_won": 0.5413,
                "tackles": 1.3159,
                "clearances": 0.1491,
                "total_contest": 0.2634,
                "won_contest": 0.1218,
                "challenges_lost": 0.1202,
                "fouls": 0.4939,
                "fouls_drawn": 0.2012,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0602,
                "xgot": 0.0,
                "ball_carries": 0.9318,
                "total_progression": 6.9666,
                "progressive_carries": 0.1074,
                "shots_off_target": 0.2492
              },
              "params": {
                "blend_weight": 0.0172,
                "history_matches": 19,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1929,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.5008,
                  "after": 0.4939
                },
                {
                  "stat": "totalShots",
                  "before": 0.3686,
                  "after": 0.3623
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.4 to 22.5 expected minutes (appearance prob 0.32)",
              "stats": {
                "key_pass": 0.6227,
                "expected_assists": 0.0405,
                "assists": 0.0606,
                "assist_rate": 0.0606,
                "expected_goals": 0.0339,
                "goals": 0.047,
                "goal_rate": 0.047,
                "shots_on_target": 0.1523,
                "total_shots": 0.4756,
                "rating": 6.6829,
                "minutes": 22.52,
                "total_pass": 7.3276,
                "accurate_pass": 5.061,
                "duels_won": 2.8288,
                "total_long_balls": 0.127,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.4231,
                "accurate_own_half_passes": 2.591,
                "total_opp_half_passes": 3.9046,
                "accurate_opp_half_passes": 2.4699,
                "crosses_total": 0.5421,
                "crosses_accurate": 0.2989,
                "touches": 13.95,
                "possession_lost": 4.6232,
                "dispossessed": 0.5734,
                "duels_lost": 3.0095,
                "aerial_won": 0.7005,
                "aerial_lost": 0.9839,
                "interceptions": 0.1271,
                "tackles_won": 0.7022,
                "tackles": 1.7071,
                "clearances": 0.1934,
                "total_contest": 0.3417,
                "won_contest": 0.158,
                "challenges_lost": 0.1202,
                "fouls": 0.6407,
                "fouls_drawn": 0.261,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0781,
                "xgot": 0.0,
                "ball_carries": 1.2088,
                "total_progression": 9.0375,
                "progressive_carries": 0.1393,
                "shots_off_target": 0.3233,
                "bench_appearance_probability": 0.318,
                "bench_expected_minutes": 22.52
              },
              "params": {
                "expected_minutes": 22.52,
                "projection_minutes": 17.36,
                "minutes_scale": 1.2973,
                "appearance_probability": 0.318
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6227,
                "expected_assists": 0.0405,
                "assists": 0.0606,
                "assist_rate": 0.0606,
                "expected_goals": 0.0339,
                "goals": 0.047,
                "goal_rate": 0.047,
                "shots_on_target": 0.1523,
                "total_shots": 0.4756,
                "rating": 6.6829,
                "minutes": 22.52,
                "total_pass": 7.3276,
                "accurate_pass": 5.061,
                "duels_won": 2.8288,
                "total_long_balls": 0.127,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.4231,
                "accurate_own_half_passes": 2.591,
                "total_opp_half_passes": 3.9046,
                "accurate_opp_half_passes": 2.4699,
                "crosses_total": 0.5421,
                "crosses_accurate": 0.2989,
                "touches": 13.95,
                "possession_lost": 4.6232,
                "dispossessed": 0.5734,
                "duels_lost": 3.0095,
                "aerial_won": 0.7005,
                "aerial_lost": 0.9839,
                "interceptions": 0.1271,
                "tackles_won": 0.7022,
                "tackles": 1.7071,
                "clearances": 0.1934,
                "total_contest": 0.3417,
                "won_contest": 0.158,
                "challenges_lost": 0.1202,
                "fouls": 0.6407,
                "fouls_drawn": 0.261,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0781,
                "xgot": 0.0,
                "ball_carries": 1.2088,
                "total_progression": 9.0375,
                "progressive_carries": 0.1393,
                "shots_off_target": 0.3233,
                "bench_appearance_probability": 0.318,
                "bench_expected_minutes": 22.52
              },
              "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.6227,
                "expected_assists": 0.0405,
                "assist_rate": 0.0606,
                "assists": 0,
                "expected_goals": 0.0339,
                "goal_rate": 0.047,
                "goals": 0,
                "shots_on_target": 0.1523,
                "total_shots": 0.4756,
                "rating": 6.6829,
                "minutes": 22.52,
                "total_pass": 7.3276,
                "accurate_pass": 5.061,
                "duels_won": 2.8288,
                "total_long_balls": 0.127,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.4231,
                "accurate_own_half_passes": 2.591,
                "total_opp_half_passes": 3.9046,
                "accurate_opp_half_passes": 2.4699,
                "crosses_total": 0.5421,
                "crosses_accurate": 0.2989,
                "touches": 13.95,
                "possession_lost": 4.6232,
                "dispossessed": 0.5734,
                "duels_lost": 3.0095,
                "aerial_won": 0.7005,
                "aerial_lost": 0.9839,
                "interceptions": 0.1271,
                "tackles_won": 0.7022,
                "tackles": 1.7071,
                "clearances": 0.1934,
                "total_contest": 0.3417,
                "won_contest": 0.158,
                "challenges_lost": 0.1202,
                "fouls": 0.6407,
                "fouls_drawn": 0.261,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0781,
                "xgot": 0.0,
                "ball_carries": 1.2088,
                "total_progression": 9.0375,
                "progressive_carries": 0.1393,
                "shots_off_target": 0.3233,
                "bench_appearance_probability": 0.318,
                "bench_expected_minutes": 22.52,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.318,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 13 by projected rating, fifa_overall 74.0; not used by the projection)",
              "stats": {
                "key_pass": 0.6227,
                "expected_assists": 0.0405,
                "assist_rate": 0.0606,
                "assists": 0,
                "expected_goals": 0.0339,
                "goal_rate": 0.047,
                "goals": 0,
                "shots_on_target": 0.1523,
                "total_shots": 0.4756,
                "rating": 6.6829,
                "minutes": 22.52,
                "total_pass": 7.3276,
                "accurate_pass": 5.061,
                "duels_won": 2.8288,
                "total_long_balls": 0.127,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 3.4231,
                "accurate_own_half_passes": 2.591,
                "total_opp_half_passes": 3.9046,
                "accurate_opp_half_passes": 2.4699,
                "crosses_total": 0.5421,
                "crosses_accurate": 0.2989,
                "touches": 13.95,
                "possession_lost": 4.6232,
                "dispossessed": 0.5734,
                "duels_lost": 3.0095,
                "aerial_won": 0.7005,
                "aerial_lost": 0.9839,
                "interceptions": 0.1271,
                "tackles_won": 0.7022,
                "tackles": 1.7071,
                "clearances": 0.1934,
                "total_contest": 0.3417,
                "won_contest": 0.158,
                "challenges_lost": 0.1202,
                "fouls": 0.6407,
                "fouls_drawn": 0.261,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0781,
                "xgot": 0.0,
                "ball_carries": 1.2088,
                "total_progression": 9.0375,
                "progressive_carries": 0.1393,
                "shots_off_target": 0.3233,
                "bench_appearance_probability": 0.318,
                "bench_expected_minutes": 22.52,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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": 74.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": 3634,
                "fifa_rank": 2689.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Tyrique George": {
          "player_id": 1403061,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 181,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.0847,
            "goal_rate": 0.0976,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0692,
            "key_pass": 1,
            "rating": 6.7261,
            "minutes": 26,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 17,
            "possession_lost": 4.3419,
            "dispossessed": 0.3085,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 1,
            "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.0547,
            "offsides": 0,
            "ball_carries": 7,
            "total_progression": 39,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.35,
            "bench_expected_minutes": 26.1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 11,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0255,
                "expected_assists": 0.0097,
                "total_shots": 1,
                "total_pass": 8,
                "accurate_pass": 7,
                "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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 65,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0455,
                "expected_assists": 0.1469,
                "total_shots": 1,
                "total_pass": 18,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.037,
                "expected_assists": 0.0655,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 26,
                "key_pass": 3,
                "interceptions": 1,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 62,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0464,
                "expected_assists": 0.0078,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 13,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 84,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1767,
                "expected_assists": 0.0753,
                "total_shots": 5,
                "shots_off_target": 2,
                "total_pass": 36,
                "accurate_pass": 30,
                "key_pass": 2,
                "interceptions": 2,
                "clearances": 1,
                "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": "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": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 28,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0318,
                "expected_assists": 0.0072,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 10,
                "accurate_pass": 7,
                "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": 14023955,
              "match_date": "2026-05-17",
              "home_team": "Everton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 17,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.4564,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 7,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 10,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0125,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "key_pass": 1,
                "interceptions": 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": 14023934,
              "match_date": "2026-04-25",
              "home_team": "West Ham United",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "West Ham United",
              "stats": {
                "minutes": 25,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0699,
                "expected_assists": 0.5409,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 13,
                "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": 14025035,
              "match_date": "2026-04-19",
              "home_team": "Everton",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 10,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 4132,
            "combined_rank_score": 2132.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3928.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7261,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tyrique George",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alberto Reina",
                  "ranking": 4127
                },
                {
                  "player_name": "Jonathan Osorio",
                  "ranking": 4128
                },
                {
                  "player_name": "Leo Sauer",
                  "ranking": 4129
                },
                {
                  "player_name": "Isac Lidberg",
                  "ranking": 4130
                },
                {
                  "player_name": "Marcus Pedersen",
                  "ranking": 4131
                }
              ],
              "lower": [
                {
                  "player_name": "Yunus Musah",
                  "ranking": 4133
                },
                {
                  "player_name": "Florent Muslija",
                  "ranking": 4134
                },
                {
                  "player_name": "Darnell Furlong",
                  "ranking": 4135
                },
                {
                  "player_name": "Lucas Noubi",
                  "ranking": 4136
                },
                {
                  "player_name": "Marcão",
                  "ranking": 4137
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.766,
          "history_matches": 20,
          "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": 20,
            "data_confidence": 0.766,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.09746860076133,
            "bench_appearance_prob": 0.35,
            "market_value_adjustment": 1.0081,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "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.1067
            },
            "rationale": "Bench projection scaled from XGBoost F_service (20 historical appearances) to 26.1 expected mins (appearance prob 0.35); 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.0573,
                "goals": 0.067,
                "goal_rate": 0.067,
                "shots_on_target": 0.2495,
                "total_shots": 0.6953,
                "expected_assists": 0.0468,
                "key_pass": 0.4076,
                "rating": 6.7261,
                "minutes": 17.81,
                "total_pass": 6.6727,
                "accurate_pass": 5.5704,
                "duels_won": 1.3153,
                "total_long_balls": 0.1959,
                "accurate_long_balls": 0.1188,
                "total_opp_half_passes": 4.7752,
                "accurate_opp_half_passes": 4.0111,
                "crosses_total": 0.8956,
                "crosses_accurate": 0.3574,
                "touches": 11.5882,
                "possession_lost": 2.9393,
                "dispossessed": 0.306,
                "duels_lost": 0.9936,
                "aerial_lost": 0.0858,
                "total_contest": 0.826,
                "won_contest": 0.4937,
                "ball_recovery": 0.9612,
                "challenges_lost": 0.0,
                "fouls": 0.2695,
                "fouls_drawn": 0.321,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1009,
                "tackles_won": 0.3458,
                "tackles": 0.4807,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.3055,
                "big_chances_missed": 0.0169,
                "xgot": 0.037,
                "offsides": 0.2348,
                "ball_carries": 4.9859,
                "total_progression": 26.117,
                "progressive_carries": 1.1837,
                "shots_off_target": 0.4458
              },
              "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": "Ipswich Town",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.156,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1326,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1127,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0958,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0815,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0692,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0589,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.05,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "West Ham United",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0425,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Liverpool FC",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0361,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0453,
                  "totalOppositionHalfPasses": 9.1151,
                  "accurateOppositionHalfPasses": 7.7997,
                  "accuratePass": 12.1459,
                  "totalShots": 1.2757
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05731448531150818,
                    "model_output": 0.0573,
                    "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.0862
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0226
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0084
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0036
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0177,
                      "total": 0.0573,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.567609
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.223805
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.09827
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.04491
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.041636
                        }
                      ],
                      "others_margin": -0.268295
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06698935478925705,
                    "model_output": 0.067,
                    "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.0813
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0214
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0067
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0062
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0056
                        }
                      ],
                      "others": -0.0155,
                      "total": 0.067,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.509333
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.192357
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.06818
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.067893
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.066087
                        }
                      ],
                      "others_margin": -0.208508
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.24948711693286896,
                    "model_output": 0.2495,
                    "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.183
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0348
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0175
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0163
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0162
                        }
                      ],
                      "others": -0.0521,
                      "total": 0.2495,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.416826
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.103468
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.05653
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.055566
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.055296
                        }
                      ],
                      "others_margin": -0.18946
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6952651739120483,
                    "model_output": 0.6953,
                    "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.4647
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1252
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0379
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0374
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0273
                        }
                      ],
                      "others": -0.1415,
                      "total": 0.6953,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.464737
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.125166
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.037915
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.037375
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.027347
                        }
                      ],
                      "others_margin": -0.141481
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04681288078427315,
                    "model_output": 0.0468,
                    "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.0226
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0047
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0029
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0025
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0021
                        }
                      ],
                      "others": 0.0021,
                      "total": 0.0468,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.432029
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.106577
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.060577
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.051871
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.046776
                        }
                      ],
                      "others_margin": 0.046379
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.40764522552490234,
                    "model_output": 0.4076,
                    "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.3116
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0208
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0189
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0199
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0129
                        }
                      ],
                      "others": 0.0401,
                      "total": 0.4076,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.620437
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.05902
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.053856
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.053796
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.03462
                        }
                      ],
                      "others_margin": 0.103626
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.726107120513916,
                    "model_output": 6.7261,
                    "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.0768
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0176
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0156
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.012
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0105
                        }
                      ],
                      "others": 0.0372,
                      "total": 6.7261,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.076841
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.01759
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.015649
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.012002
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010452
                        }
                      ],
                      "others_margin": 0.037296
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 20,
                  "role_matches": 15,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0081, quality 0.641)",
              "stats": {
                "expected_goals": 0.0578,
                "goals": 0.0675,
                "goal_rate": 0.0675,
                "shots_on_target": 0.2515,
                "total_shots": 0.7009,
                "expected_assists": 0.0472,
                "key_pass": 0.4109,
                "rating": 6.7261,
                "minutes": 17.81,
                "total_pass": 6.7267,
                "accurate_pass": 5.6155,
                "duels_won": 1.326,
                "total_long_balls": 0.1975,
                "accurate_long_balls": 0.1198,
                "total_opp_half_passes": 4.8139,
                "accurate_opp_half_passes": 4.0436,
                "crosses_total": 0.9029,
                "crosses_accurate": 0.3603,
                "touches": 11.6821,
                "possession_lost": 2.9631,
                "dispossessed": 0.3085,
                "duels_lost": 1.0016,
                "aerial_lost": 0.0865,
                "total_contest": 0.8327,
                "won_contest": 0.4977,
                "ball_recovery": 0.969,
                "challenges_lost": 0.0,
                "fouls": 0.2717,
                "fouls_drawn": 0.3236,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1017,
                "tackles_won": 0.3486,
                "tackles": 0.4846,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.308,
                "big_chances_missed": 0.017,
                "xgot": 0.0373,
                "offsides": 0.2367,
                "ball_carries": 5.0263,
                "total_progression": 26.3285,
                "progressive_carries": 1.1933,
                "shots_off_target": 0.4494
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0081,
                "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.0139)",
              "stats": {
                "expected_goals": 0.0578,
                "goals": 0.0666,
                "goal_rate": 0.0666,
                "shots_on_target": 0.2497,
                "total_shots": 0.7032,
                "expected_assists": 0.0472,
                "key_pass": 0.4109,
                "rating": 6.7261,
                "minutes": 17.81,
                "total_pass": 6.7267,
                "accurate_pass": 5.6155,
                "duels_won": 1.326,
                "total_long_balls": 0.1975,
                "accurate_long_balls": 0.1198,
                "total_opp_half_passes": 4.8139,
                "accurate_opp_half_passes": 4.0436,
                "crosses_total": 0.8972,
                "crosses_accurate": 0.3603,
                "touches": 11.6821,
                "possession_lost": 2.9631,
                "dispossessed": 0.3085,
                "duels_lost": 1.0016,
                "aerial_lost": 0.0865,
                "total_contest": 0.8327,
                "won_contest": 0.4977,
                "ball_recovery": 0.969,
                "challenges_lost": 0.0,
                "fouls": 0.2679,
                "fouls_drawn": 0.3208,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1037,
                "tackles_won": 0.3455,
                "tackles": 0.4846,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.308,
                "big_chances_missed": 0.017,
                "xgot": 0.0373,
                "offsides": 0.2351,
                "ball_carries": 5.0263,
                "total_progression": 26.3285,
                "progressive_carries": 1.1933,
                "shots_off_target": 0.4494
              },
              "params": {
                "blend_weight": 0.0139,
                "history_matches": 20,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1979,
                "prior_reliability": 0.1067,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.9029,
                  "after": 0.8972
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.8 to 26.1 expected minutes (appearance prob 0.35)",
              "stats": {
                "expected_goals": 0.0847,
                "goals": 0.0976,
                "goal_rate": 0.0976,
                "shots_on_target": 0.3659,
                "total_shots": 1.0304,
                "expected_assists": 0.0692,
                "key_pass": 0.6021,
                "rating": 6.7261,
                "minutes": 26.1,
                "total_pass": 9.8568,
                "accurate_pass": 8.2285,
                "duels_won": 1.943,
                "total_long_balls": 0.2894,
                "accurate_long_balls": 0.1755,
                "total_opp_half_passes": 7.0539,
                "accurate_opp_half_passes": 5.9252,
                "crosses_total": 1.3147,
                "crosses_accurate": 0.528,
                "touches": 17.1181,
                "possession_lost": 4.3419,
                "dispossessed": 0.3085,
                "duels_lost": 1.4677,
                "aerial_lost": 0.0865,
                "total_contest": 1.2202,
                "won_contest": 0.7293,
                "ball_recovery": 1.4199,
                "challenges_lost": 0.0,
                "fouls": 0.3926,
                "fouls_drawn": 0.4701,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.152,
                "tackles_won": 0.5063,
                "tackles": 0.7101,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.4513,
                "big_chances_missed": 0.0249,
                "xgot": 0.0547,
                "offsides": 0.2351,
                "ball_carries": 7.3652,
                "total_progression": 38.5799,
                "progressive_carries": 1.7486,
                "shots_off_target": 0.6585,
                "bench_appearance_probability": 0.35,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "expected_minutes": 26.1,
                "projection_minutes": 17.81,
                "minutes_scale": 1.4653,
                "appearance_probability": 0.35
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0847,
                "goals": 0.0976,
                "goal_rate": 0.0976,
                "shots_on_target": 0.3659,
                "total_shots": 1.0304,
                "expected_assists": 0.0692,
                "key_pass": 0.6021,
                "rating": 6.7261,
                "minutes": 26.1,
                "total_pass": 9.8568,
                "accurate_pass": 8.2285,
                "duels_won": 1.943,
                "total_long_balls": 0.2894,
                "accurate_long_balls": 0.1755,
                "total_opp_half_passes": 7.0539,
                "accurate_opp_half_passes": 5.9252,
                "crosses_total": 1.3147,
                "crosses_accurate": 0.528,
                "touches": 17.1181,
                "possession_lost": 4.3419,
                "dispossessed": 0.3085,
                "duels_lost": 1.4677,
                "aerial_lost": 0.0865,
                "total_contest": 1.2202,
                "won_contest": 0.7293,
                "ball_recovery": 1.4199,
                "challenges_lost": 0.0,
                "fouls": 0.3926,
                "fouls_drawn": 0.4701,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.152,
                "tackles_won": 0.5063,
                "tackles": 0.7101,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.4513,
                "big_chances_missed": 0.0249,
                "xgot": 0.0547,
                "offsides": 0.2351,
                "ball_carries": 7.3652,
                "total_progression": 38.5799,
                "progressive_carries": 1.7486,
                "shots_off_target": 0.6585,
                "bench_appearance_probability": 0.35,
                "bench_expected_minutes": 26.1
              },
              "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": {
                "expected_goals": 0.0847,
                "goal_rate": 0.0976,
                "goals": 0,
                "shots_on_target": 0.3659,
                "total_shots": 1.0304,
                "expected_assists": 0.0692,
                "key_pass": 0.6021,
                "rating": 6.7261,
                "minutes": 26.1,
                "total_pass": 9.8568,
                "accurate_pass": 8.2285,
                "duels_won": 1.943,
                "total_long_balls": 0.2894,
                "accurate_long_balls": 0.1755,
                "total_opp_half_passes": 7.0539,
                "accurate_opp_half_passes": 5.9252,
                "crosses_total": 1.3147,
                "crosses_accurate": 0.528,
                "touches": 17.1181,
                "possession_lost": 4.3419,
                "dispossessed": 0.3085,
                "duels_lost": 1.4677,
                "aerial_lost": 0.0865,
                "total_contest": 1.2202,
                "won_contest": 0.7293,
                "ball_recovery": 1.4199,
                "challenges_lost": 0.0,
                "fouls": 0.3926,
                "fouls_drawn": 0.4701,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.152,
                "tackles_won": 0.5063,
                "tackles": 0.7101,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.4513,
                "big_chances_missed": 0.0249,
                "xgot": 0.0547,
                "offsides": 0.2351,
                "ball_carries": 7.3652,
                "total_progression": 38.5799,
                "progressive_carries": 1.7486,
                "shots_off_target": 0.6585,
                "bench_appearance_probability": 0.35,
                "bench_expected_minutes": 26.1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.35,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 11 by projected rating, fifa_overall 72.0; not used by the projection)",
              "stats": {
                "expected_goals": 0.0847,
                "goal_rate": 0.0976,
                "goals": 0,
                "shots_on_target": 0.3659,
                "total_shots": 1.0304,
                "expected_assists": 0.0692,
                "key_pass": 0.6021,
                "rating": 6.7261,
                "minutes": 26.1,
                "total_pass": 9.8568,
                "accurate_pass": 8.2285,
                "duels_won": 1.943,
                "total_long_balls": 0.2894,
                "accurate_long_balls": 0.1755,
                "total_opp_half_passes": 7.0539,
                "accurate_opp_half_passes": 5.9252,
                "crosses_total": 1.3147,
                "crosses_accurate": 0.528,
                "touches": 17.1181,
                "possession_lost": 4.3419,
                "dispossessed": 0.3085,
                "duels_lost": 1.4677,
                "aerial_lost": 0.0865,
                "total_contest": 1.2202,
                "won_contest": 0.7293,
                "ball_recovery": 1.4199,
                "challenges_lost": 0.0,
                "fouls": 0.3926,
                "fouls_drawn": 0.4701,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.152,
                "tackles_won": 0.5063,
                "tackles": 0.7101,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.4513,
                "big_chances_missed": 0.0249,
                "xgot": 0.0547,
                "offsides": 0.2351,
                "ball_carries": 7.3652,
                "total_progression": 38.5799,
                "progressive_carries": 1.7486,
                "shots_off_target": 0.6585,
                "bench_appearance_probability": 0.35,
                "bench_expected_minutes": 26.1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4132,
                "fifa_rank": 3928.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            }
          ]
        },
        "Beto": {
          "player_id": 987489,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 194,
          "market_value": 19300000,
          "stats": {
            "expected_goals": 0.1877,
            "goal_rate": 0.1882,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0241,
            "key_pass": 0,
            "rating": 6.5877,
            "minutes": 21,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 3.2135,
            "dispossessed": 0.4622,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.128,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.734,
            "bench_expected_minutes": 21.06,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.1256,
            "projected_assists": 0,
            "assist_probability": 0.0175,
            "finishing_factor": 1.2036,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 20,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0375,
                "expected_assists": 0.0045,
                "total_shots": 1,
                "shots_off_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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0484,
                "expected_assists": 0.0,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "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": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 18,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "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": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 73,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2107,
                "expected_assists": 0.0006,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 70,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2855,
                "expected_assists": 0.007,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 64,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1987,
                "expected_assists": 0.0005,
                "total_shots": 2,
                "total_pass": 3,
                "accurate_pass": 1,
                "key_pass": 2,
                "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": 14025035,
              "match_date": "2026-04-19",
              "home_team": "Everton",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 73,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4726,
                "expected_assists": 0.0025,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 11,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 4,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025022,
              "match_date": "2026-04-11",
              "home_team": "Brentford",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Brentford",
              "stats": {
                "minutes": 74,
                "rating": 6.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5733,
                "expected_assists": 0.0094,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 11,
                "key_pass": 1,
                "clearances": 2,
                "aerial_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": 14024017,
              "match_date": "2026-03-21",
              "home_team": "Everton",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 81,
                "rating": 9.0,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.6024,
                "expected_assists": 0.0485,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 17,
                "accurate_pass": 10,
                "key_pass": 2,
                "tackles": 1,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023987,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 69,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1091,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 4,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3149,
            "combined_rank_score": 1115.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 803.0,
            "sofascore_rating": 6.6194,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1428.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.5877,
            "source_file": "data/player_rankings.csv",
            "player_name": "Beto",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luciano Valente",
                  "ranking": 3144
                },
                {
                  "player_name": "Michael Keane",
                  "ranking": 3145
                },
                {
                  "player_name": "Ao Tanaka",
                  "ranking": 3146
                },
                {
                  "player_name": "Fábio Vieira",
                  "ranking": 3147
                },
                {
                  "player_name": "Emanuel Emegha",
                  "ranking": 3148
                }
              ],
              "lower": [
                {
                  "player_name": "Chemsdine Talbi",
                  "ranking": 3150
                },
                {
                  "player_name": "Nicolás Fernández",
                  "ranking": 3151
                },
                {
                  "player_name": "Michal Sadílek",
                  "ranking": 3152
                },
                {
                  "player_name": "Tammy Abraham",
                  "ranking": 3153
                },
                {
                  "player_name": "Rafa Marín",
                  "ranking": 3154
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.754,
          "history_matches": 39,
          "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": 39,
            "data_confidence": 0.754,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 21.06,
            "bench_appearance_prob": 0.734,
            "market_value_adjustment": 1.0041,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 17.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0267
            },
            "rationale": "Bench projection scaled from XGBoost F_service (39 historical appearances) to 21.1 expected mins (appearance prob 0.73); FBref playing time empirical prior: 2.0 sub appearances, 17.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1201,
                "goals": 0.1531,
                "goal_rate": 0.1531,
                "shots_on_target": 0.322,
                "total_shots": 0.7691,
                "expected_assists": 0.0141,
                "key_pass": 0.283,
                "rating": 6.5877,
                "minutes": 17.17,
                "total_pass": 2.3545,
                "accurate_pass": 1.3932,
                "duels_won": 1.0618,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.3475,
                "accurate_opp_half_passes": 0.5973,
                "crosses_total": 0.1823,
                "crosses_accurate": 0.0,
                "touches": 6.4946,
                "possession_lost": 2.6092,
                "dispossessed": 0.4603,
                "duels_lost": 3.0739,
                "aerial_lost": 2.0183,
                "total_contest": 0.4185,
                "won_contest": 0.1108,
                "ball_recovery": 0.2395,
                "challenges_lost": 0.0685,
                "fouls": 0.427,
                "fouls_drawn": 0.0051,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0582,
                "tackles_won": 0.0,
                "tackles": 0.1171,
                "clearances": 0.2052,
                "blocks": 0.1543,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0149,
                "xgot": 0.082,
                "offsides": 0.084,
                "ball_carries": 0.9238,
                "total_progression": 0.9377,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4471
              },
              "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-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.1503,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.1086,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Liverpool FC",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Brentford",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Chelsea",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 9.0
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Arsenal",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1988,
                  "totalOppositionHalfPasses": 3.1353,
                  "accurateOppositionHalfPasses": 1.8159,
                  "accuratePass": 3.3859,
                  "totalShots": 1.3325
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12007998675107956,
                    "model_output": 0.1201,
                    "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.0949
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0051
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0045
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0046
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0045
                        }
                      ],
                      "others": 0.0075,
                      "total": 0.1201,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.647763
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.049916
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.044847
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.043879
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.040355
                        }
                      ],
                      "others_margin": 0.063678
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.15310420095920563,
                    "model_output": 0.1531,
                    "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.0829
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0071
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0061
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0061
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0056
                        }
                      ],
                      "others": 0.0074,
                      "total": 0.1531,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.522522
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.057007
                        },
                        {
                          "name": "goals",
                          "margin": 0.046547
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.044433
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.039257
                        }
                      ],
                      "others_margin": 0.049505
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3219776451587677,
                    "model_output": 0.322,
                    "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.2328
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0117
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0103
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0103
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0091
                        }
                      ],
                      "others": -0.0002,
                      "total": 0.322,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.568498
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.039189
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.034696
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.033369
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.028802
                        }
                      ],
                      "others_margin": -0.000658
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7690419554710388,
                    "model_output": 0.769,
                    "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.5511
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0624
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0315
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0249
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0191
                        }
                      ],
                      "others": 0.0163,
                      "total": 0.769,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551138
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.062354
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.031484
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.024881
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.019137
                        }
                      ],
                      "others_margin": 0.016361
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.014118791557848454,
                    "model_output": 0.0141,
                    "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.0195
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0117
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0034
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0028
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.0141,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.36115
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.303505
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.107379
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.100022
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.082514
                        }
                      ],
                      "others_margin": -0.561223
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.28301236033439636,
                    "model_output": 0.283,
                    "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.2621
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0357
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0312
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0213
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.021
                        }
                      ],
                      "others": -0.0617,
                      "total": 0.283,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.492474
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.090659
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.086566
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.063676
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.062782
                        }
                      ],
                      "others_margin": -0.197113
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.587714195251465,
                    "model_output": 6.5877,
                    "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.053
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0194
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0146
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0145
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0144
                        }
                      ],
                      "others": -0.0586,
                      "total": 6.5877,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.052954
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.01944
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01462
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.014504
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.014431
                        }
                      ],
                      "others_margin": -0.058499
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 39,
                  "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.0041, quality 0.624)",
              "stats": {
                "expected_goals": 0.1206,
                "goals": 0.1537,
                "goal_rate": 0.1537,
                "shots_on_target": 0.3233,
                "total_shots": 0.7722,
                "expected_assists": 0.0142,
                "key_pass": 0.2842,
                "rating": 6.5877,
                "minutes": 17.17,
                "total_pass": 2.3642,
                "accurate_pass": 1.3989,
                "duels_won": 1.0662,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.353,
                "accurate_opp_half_passes": 0.5997,
                "crosses_total": 0.183,
                "crosses_accurate": 0.0,
                "touches": 6.5212,
                "possession_lost": 2.6199,
                "dispossessed": 0.4622,
                "duels_lost": 3.0865,
                "aerial_lost": 2.0266,
                "total_contest": 0.4202,
                "won_contest": 0.1113,
                "ball_recovery": 0.2405,
                "challenges_lost": 0.0688,
                "fouls": 0.4288,
                "fouls_drawn": 0.0051,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0584,
                "tackles_won": 0.0,
                "tackles": 0.1176,
                "clearances": 0.206,
                "blocks": 0.1549,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.015,
                "xgot": 0.0823,
                "offsides": 0.0843,
                "ball_carries": 0.9276,
                "total_progression": 0.9415,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4489
              },
              "params": {
                "market_value_eur": 19300000,
                "quality_factor": 0.6241,
                "boost_factor": 1.0041,
                "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.0020)",
              "stats": {
                "expected_goals": 0.1206,
                "goals": 0.1534,
                "goal_rate": 0.1534,
                "shots_on_target": 0.3227,
                "total_shots": 0.7727,
                "expected_assists": 0.0142,
                "key_pass": 0.2842,
                "rating": 6.5877,
                "minutes": 17.17,
                "total_pass": 2.3642,
                "accurate_pass": 1.3989,
                "duels_won": 1.0662,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.353,
                "accurate_opp_half_passes": 0.5997,
                "crosses_total": 0.1836,
                "crosses_accurate": 0.0,
                "touches": 6.5212,
                "possession_lost": 2.6199,
                "dispossessed": 0.4622,
                "duels_lost": 3.0865,
                "aerial_lost": 2.0266,
                "total_contest": 0.4202,
                "won_contest": 0.1113,
                "ball_recovery": 0.2405,
                "challenges_lost": 0.0688,
                "fouls": 0.428,
                "fouls_drawn": 0.0051,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0583,
                "tackles_won": 0.0,
                "tackles": 0.1176,
                "clearances": 0.206,
                "blocks": 0.1549,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.015,
                "xgot": 0.0823,
                "offsides": 0.0841,
                "ball_carries": 0.9276,
                "total_progression": 0.9415,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4489
              },
              "params": {
                "blend_weight": 0.002,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1908,
                "prior_reliability": 0.0267,
                "competition": "Premier League",
                "squad": "Everton"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.2 to 21.1 expected minutes (appearance prob 0.73)",
              "stats": {
                "expected_goals": 0.1479,
                "goals": 0.1882,
                "goal_rate": 0.1882,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0174,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.1009,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06
              },
              "params": {
                "expected_minutes": 21.06,
                "projection_minutes": 17.17,
                "minutes_scale": 1.2266,
                "appearance_probability": 0.734
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1479,
                "goals": 0.1882,
                "goal_rate": 0.1882,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0174,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.1009,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06
              },
              "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.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2036,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 0.734
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1479,
                  "after": 0.1877
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0174,
                  "after": 0.0241
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2036,
                "creation_factor": 0.8,
                "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": 3149,
                "fifa_rank": 1428.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.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.1256,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2036,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1256,
                "scorer_weight": 0.1658,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0857,
                "finishing_factor": 1.2036,
                "appearance_weight": 0.734,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.1256,
                "projected_assists": 0,
                "assist_probability": 0.0175,
                "finishing_factor": 1.2036,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0175,
                "provider_weight": 0.0142,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0137,
                "creation_factor": 0.8,
                "appearance_weight": 0.734,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Beto": {
          "player_id": 987489,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 194,
          "market_value": 19300000,
          "stats": {
            "expected_goals": 0.1877,
            "goal_rate": 0.1882,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0241,
            "key_pass": 0,
            "rating": 6.5877,
            "minutes": 21,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 3.2135,
            "dispossessed": 0.4622,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.128,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.734,
            "bench_expected_minutes": 21.06,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.1256,
            "projected_assists": 0,
            "assist_probability": 0.0175,
            "finishing_factor": 1.2036,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 20,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0375,
                "expected_assists": 0.0045,
                "total_shots": 1,
                "shots_off_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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0484,
                "expected_assists": 0.0,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "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": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 18,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "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": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 73,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2107,
                "expected_assists": 0.0006,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023937,
              "match_date": "2026-05-10",
              "home_team": "Crystal Palace",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 70,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2855,
                "expected_assists": 0.007,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023930,
              "match_date": "2026-05-04",
              "home_team": "Everton",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 64,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1987,
                "expected_assists": 0.0005,
                "total_shots": 2,
                "total_pass": 3,
                "accurate_pass": 1,
                "key_pass": 2,
                "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": 14025035,
              "match_date": "2026-04-19",
              "home_team": "Everton",
              "away_team": "Liverpool FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 73,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4726,
                "expected_assists": 0.0025,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 11,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 4,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025022,
              "match_date": "2026-04-11",
              "home_team": "Brentford",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Brentford",
              "stats": {
                "minutes": 74,
                "rating": 6.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5733,
                "expected_assists": 0.0094,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 11,
                "key_pass": 1,
                "clearances": 2,
                "aerial_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": 14024017,
              "match_date": "2026-03-21",
              "home_team": "Everton",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 81,
                "rating": 9.0,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.6024,
                "expected_assists": 0.0485,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 17,
                "accurate_pass": 10,
                "key_pass": 2,
                "tackles": 1,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023987,
              "match_date": "2026-03-14",
              "home_team": "Arsenal",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 69,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1091,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 4,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3149,
            "combined_rank_score": 1115.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 803.0,
            "sofascore_rating": 6.6194,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1428.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.5877,
            "source_file": "data/player_rankings.csv",
            "player_name": "Beto",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luciano Valente",
                  "ranking": 3144
                },
                {
                  "player_name": "Michael Keane",
                  "ranking": 3145
                },
                {
                  "player_name": "Ao Tanaka",
                  "ranking": 3146
                },
                {
                  "player_name": "Fábio Vieira",
                  "ranking": 3147
                },
                {
                  "player_name": "Emanuel Emegha",
                  "ranking": 3148
                }
              ],
              "lower": [
                {
                  "player_name": "Chemsdine Talbi",
                  "ranking": 3150
                },
                {
                  "player_name": "Nicolás Fernández",
                  "ranking": 3151
                },
                {
                  "player_name": "Michal Sadílek",
                  "ranking": 3152
                },
                {
                  "player_name": "Tammy Abraham",
                  "ranking": 3153
                },
                {
                  "player_name": "Rafa Marín",
                  "ranking": 3154
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.754,
          "history_matches": 39,
          "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": 39,
            "data_confidence": 0.754,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 21.06,
            "bench_appearance_prob": 0.734,
            "market_value_adjustment": 1.0041,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 17.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0267
            },
            "rationale": "Bench projection scaled from XGBoost F_service (39 historical appearances) to 21.1 expected mins (appearance prob 0.73); FBref playing time empirical prior: 2.0 sub appearances, 17.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1201,
                "goals": 0.1531,
                "goal_rate": 0.1531,
                "shots_on_target": 0.322,
                "total_shots": 0.7691,
                "expected_assists": 0.0141,
                "key_pass": 0.283,
                "rating": 6.5877,
                "minutes": 17.17,
                "total_pass": 2.3545,
                "accurate_pass": 1.3932,
                "duels_won": 1.0618,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.3475,
                "accurate_opp_half_passes": 0.5973,
                "crosses_total": 0.1823,
                "crosses_accurate": 0.0,
                "touches": 6.4946,
                "possession_lost": 2.6092,
                "dispossessed": 0.4603,
                "duels_lost": 3.0739,
                "aerial_lost": 2.0183,
                "total_contest": 0.4185,
                "won_contest": 0.1108,
                "ball_recovery": 0.2395,
                "challenges_lost": 0.0685,
                "fouls": 0.427,
                "fouls_drawn": 0.0051,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0582,
                "tackles_won": 0.0,
                "tackles": 0.1171,
                "clearances": 0.2052,
                "blocks": 0.1543,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0149,
                "xgot": 0.082,
                "offsides": 0.084,
                "ball_carries": 0.9238,
                "total_progression": 0.9377,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4471
              },
              "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-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.1503,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.1086,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sunderland",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Crystal Palace",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Manchester City",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Liverpool FC",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Brentford",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Chelsea",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 9.0
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Arsenal",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1988,
                  "totalOppositionHalfPasses": 3.1353,
                  "accurateOppositionHalfPasses": 1.8159,
                  "accuratePass": 3.3859,
                  "totalShots": 1.3325
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12007998675107956,
                    "model_output": 0.1201,
                    "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.0949
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0051
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0045
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0046
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0045
                        }
                      ],
                      "others": 0.0075,
                      "total": 0.1201,
                      "log_link": true,
                      "margin_base": -1.614679,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.647763
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.049916
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.044847
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.043879
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.040355
                        }
                      ],
                      "others_margin": 0.063678
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.15310420095920563,
                    "model_output": 0.1531,
                    "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.0829
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0071
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0061
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0061
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0056
                        }
                      ],
                      "others": 0.0074,
                      "total": 0.1531,
                      "log_link": true,
                      "margin_base": -1.590865,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.522522
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.057007
                        },
                        {
                          "name": "goals",
                          "margin": 0.046547
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.044433
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.039257
                        }
                      ],
                      "others_margin": 0.049505
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3219776451587677,
                    "model_output": 0.322,
                    "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.2328
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0117
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0103
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0103
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0091
                        }
                      ],
                      "others": -0.0002,
                      "total": 0.322,
                      "log_link": true,
                      "margin_base": -0.621795,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.568498
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.039189
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.034696
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.033369
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.028802
                        }
                      ],
                      "others_margin": -0.000658
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7690419554710388,
                    "model_output": 0.769,
                    "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.5511
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0624
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0315
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0249
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0191
                        }
                      ],
                      "others": 0.0163,
                      "total": 0.769,
                      "log_link": false,
                      "margin_base": 1.378707,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551138
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.062354
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.031484
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.024881
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.019137
                        }
                      ],
                      "others_margin": 0.016361
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.014118791557848454,
                    "model_output": 0.0141,
                    "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.0195
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0117
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0034
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0028
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0021
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.0141,
                      "log_link": true,
                      "margin_base": -2.744455,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.36115
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.303505
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.107379
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.100022
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.082514
                        }
                      ],
                      "others_margin": -0.561223
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.28301236033439636,
                    "model_output": 0.283,
                    "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.2621
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0357
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0312
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0213
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.021
                        }
                      ],
                      "others": -0.0617,
                      "total": 0.283,
                      "log_link": true,
                      "margin_base": -0.394559,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.492474
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.090659
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.086566
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.063676
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.062782
                        }
                      ],
                      "others_margin": -0.197113
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.587714195251465,
                    "model_output": 6.5877,
                    "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.053
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0194
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0146
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0145
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0144
                        }
                      ],
                      "others": -0.0586,
                      "total": 6.5877,
                      "log_link": false,
                      "margin_base": 6.762162,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.052954
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.01944
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01462
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.014504
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.014431
                        }
                      ],
                      "others_margin": -0.058499
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 39,
                  "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.0041, quality 0.624)",
              "stats": {
                "expected_goals": 0.1206,
                "goals": 0.1537,
                "goal_rate": 0.1537,
                "shots_on_target": 0.3233,
                "total_shots": 0.7722,
                "expected_assists": 0.0142,
                "key_pass": 0.2842,
                "rating": 6.5877,
                "minutes": 17.17,
                "total_pass": 2.3642,
                "accurate_pass": 1.3989,
                "duels_won": 1.0662,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.353,
                "accurate_opp_half_passes": 0.5997,
                "crosses_total": 0.183,
                "crosses_accurate": 0.0,
                "touches": 6.5212,
                "possession_lost": 2.6199,
                "dispossessed": 0.4622,
                "duels_lost": 3.0865,
                "aerial_lost": 2.0266,
                "total_contest": 0.4202,
                "won_contest": 0.1113,
                "ball_recovery": 0.2405,
                "challenges_lost": 0.0688,
                "fouls": 0.4288,
                "fouls_drawn": 0.0051,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0584,
                "tackles_won": 0.0,
                "tackles": 0.1176,
                "clearances": 0.206,
                "blocks": 0.1549,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.015,
                "xgot": 0.0823,
                "offsides": 0.0843,
                "ball_carries": 0.9276,
                "total_progression": 0.9415,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4489
              },
              "params": {
                "market_value_eur": 19300000,
                "quality_factor": 0.6241,
                "boost_factor": 1.0041,
                "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.0020)",
              "stats": {
                "expected_goals": 0.1206,
                "goals": 0.1534,
                "goal_rate": 0.1534,
                "shots_on_target": 0.3227,
                "total_shots": 0.7727,
                "expected_assists": 0.0142,
                "key_pass": 0.2842,
                "rating": 6.5877,
                "minutes": 17.17,
                "total_pass": 2.3642,
                "accurate_pass": 1.3989,
                "duels_won": 1.0662,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.353,
                "accurate_opp_half_passes": 0.5997,
                "crosses_total": 0.1836,
                "crosses_accurate": 0.0,
                "touches": 6.5212,
                "possession_lost": 2.6199,
                "dispossessed": 0.4622,
                "duels_lost": 3.0865,
                "aerial_lost": 2.0266,
                "total_contest": 0.4202,
                "won_contest": 0.1113,
                "ball_recovery": 0.2405,
                "challenges_lost": 0.0688,
                "fouls": 0.428,
                "fouls_drawn": 0.0051,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0583,
                "tackles_won": 0.0,
                "tackles": 0.1176,
                "clearances": 0.206,
                "blocks": 0.1549,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.015,
                "xgot": 0.0823,
                "offsides": 0.0841,
                "ball_carries": 0.9276,
                "total_progression": 0.9415,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4489
              },
              "params": {
                "blend_weight": 0.002,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1908,
                "prior_reliability": 0.0267,
                "competition": "Premier League",
                "squad": "Everton"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.2 to 21.1 expected minutes (appearance prob 0.73)",
              "stats": {
                "expected_goals": 0.1479,
                "goals": 0.1882,
                "goal_rate": 0.1882,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0174,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.1009,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06
              },
              "params": {
                "expected_minutes": 21.06,
                "projection_minutes": 17.17,
                "minutes_scale": 1.2266,
                "appearance_probability": 0.734
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1479,
                "goals": 0.1882,
                "goal_rate": 0.1882,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0174,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.1009,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06
              },
              "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.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2036,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 0.734
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1479,
                  "after": 0.1877
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0174,
                  "after": 0.0241
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2036,
                "creation_factor": 0.8,
                "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": 3149,
                "fifa_rank": 1428.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.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.1256,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2036,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1256,
                "scorer_weight": 0.1658,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0857,
                "finishing_factor": 1.2036,
                "appearance_weight": 0.734,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.1877,
                "goal_rate": 0.1882,
                "goals": 0,
                "shots_on_target": 0.3958,
                "total_shots": 0.9478,
                "expected_assists": 0.0241,
                "key_pass": 0.3486,
                "rating": 6.5877,
                "minutes": 21.06,
                "total_pass": 2.8998,
                "accurate_pass": 1.7158,
                "duels_won": 1.3078,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 1.6595,
                "accurate_opp_half_passes": 0.7356,
                "crosses_total": 0.2252,
                "crosses_accurate": 0.0,
                "touches": 7.9986,
                "possession_lost": 3.2135,
                "dispossessed": 0.4622,
                "duels_lost": 3.7858,
                "aerial_lost": 2.0266,
                "total_contest": 0.5154,
                "won_contest": 0.1365,
                "ball_recovery": 0.295,
                "challenges_lost": 0.0688,
                "fouls": 0.525,
                "fouls_drawn": 0.0063,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0715,
                "tackles_won": 0.0,
                "tackles": 0.1442,
                "clearances": 0.2527,
                "blocks": 0.19,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0184,
                "xgot": 0.128,
                "offsides": 0.0841,
                "ball_carries": 1.1378,
                "total_progression": 1.1548,
                "progressive_carries": 0.0,
                "shots_off_target": 0.5506,
                "bench_appearance_probability": 0.734,
                "bench_expected_minutes": 21.06,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.1256,
                "projected_assists": 0,
                "assist_probability": 0.0175,
                "finishing_factor": 1.2036,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0175,
                "provider_weight": 0.0142,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0137,
                "creation_factor": 0.8,
                "appearance_weight": 0.734,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Hayden Hackney": {
          "player_id": 1008471,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 178,
          "market_value": 35000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0685,
            "assist_rate": 0.0936,
            "assists": 0,
            "expected_goals": 0.0459,
            "goal_rate": 0.0552,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.6745,
            "minutes": 26,
            "total_pass": 13,
            "accurate_pass": 12,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 3.5658,
            "dispossessed": 0.2351,
            "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": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 4,
            "total_progression": 28,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.525,
            "bench_expected_minutes": 26.4,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.254,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0236,
            "projected_assists": 0,
            "assist_probability": 0.0348,
            "finishing_factor": 1.2204,
            "creation_factor": 1.25,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363651,
              "match_date": "2026-09-19",
              "home_team": "Everton",
              "away_team": "Ipswich Town",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "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": 16363647,
              "match_date": "2026-09-12",
              "home_team": "Tottenham Hotspur",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0195,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "key_pass": 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": 16363259,
              "match_date": "2026-09-06",
              "home_team": "Everton",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 15,
                "rating": 6.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0384,
                "expected_assists": 0.0892,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 13,
                "key_pass": 2,
                "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": 16363247,
              "match_date": "2026-08-29",
              "home_team": "Bournemouth",
              "away_team": "Everton",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Everton",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0115,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 16,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Everton",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 79,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0098,
                "expected_assists": 0.0091,
                "total_shots": 1,
                "total_pass": 43,
                "accurate_pass": 38,
                "key_pass": 1,
                "tackles": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 2871,
            "combined_rank_score": 970.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1429.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6745,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hayden Hackney",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Miguel Loureiro",
                  "ranking": 2866
                },
                {
                  "player_name": "Saba Sazonov",
                  "ranking": 2867
                },
                {
                  "player_name": "Juan Pablo Nieto",
                  "ranking": 2868
                },
                {
                  "player_name": "Adalid Terrazas",
                  "ranking": 2869
                },
                {
                  "player_name": "Choi Sung-bum",
                  "ranking": 2870
                }
              ],
              "lower": [
                {
                  "player_name": "Marcelino Moreno",
                  "ranking": 2872
                },
                {
                  "player_name": "Dylan Escobar",
                  "ranking": 2873
                },
                {
                  "player_name": "Nicholas Pozo",
                  "ranking": 2874
                },
                {
                  "player_name": "Andreas Malin",
                  "ranking": 2875
                },
                {
                  "player_name": "Jauregizar",
                  "ranking": 2876
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.575,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.575,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.4,
            "bench_appearance_prob": 0.525,
            "market_value_adjustment": 1.037,
            "fbref_prior_metrics": {
              "squad": "Everton",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 29.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.08
            },
            "rationale": "Bench projection scaled from XGBoost M_service (5 historical appearances) to 26.4 expected mins (appearance prob 0.53); FBref playing time empirical prior: 1.0 sub appearances, 29.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3352,
                "expected_assists": 0.0318,
                "assists": 0.0618,
                "assist_rate": 0.0618,
                "expected_goals": 0.0232,
                "goals": 0.0364,
                "goal_rate": 0.0364,
                "shots_on_target": 0.107,
                "total_shots": 0.3212,
                "rating": 6.6745,
                "minutes": 16.54,
                "total_pass": 8.4188,
                "accurate_pass": 7.7726,
                "duels_won": 0.2267,
                "total_long_balls": 0.2667,
                "accurate_long_balls": 0.2667,
                "total_own_half_passes": 2.9892,
                "accurate_own_half_passes": 2.9892,
                "total_opp_half_passes": 5.4296,
                "accurate_opp_half_passes": 4.7834,
                "crosses_total": 0.8389,
                "crosses_accurate": 0.2267,
                "touches": 12.3503,
                "possession_lost": 2.2924,
                "dispossessed": 0.2267,
                "duels_lost": 1.5065,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1927,
                "tackles_won": 0.0,
                "tackles": 0.2267,
                "clearances": 0.2667,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0131,
                "fouls": 0.2667,
                "fouls_drawn": 0.0,
                "blocks": 0.1927,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.8305,
                "total_progression": 18.1073,
                "progressive_carries": 0.4535,
                "shots_off_target": 0.2141
              },
              "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": "Ipswich Town",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.2696,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.2292,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Manchester United",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1948,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Bournemouth",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Crystal Palace",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.3356,
                  "creative_index": 0.3189,
                  "expectedGoals": 0.0089,
                  "expectedAssists": 0.0251,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3351545035839081,
                    "model_output": 0.3352,
                    "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.4209
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0455
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0286
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0211
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0135
                        }
                      ],
                      "others": -0.0214,
                      "total": 0.3352,
                      "log_link": true,
                      "margin_base": -0.120816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.644331
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.102806
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.070438
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.055362
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.037283
                        }
                      ],
                      "others_margin": -0.062128
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03180359676480293,
                    "model_output": 0.0318,
                    "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.0382
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0069
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0022
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0017
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0017
                        }
                      ],
                      "others": -0.0067,
                      "total": 0.0318,
                      "log_link": true,
                      "margin_base": -2.456047,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.589265
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.156145
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.056636
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.045953
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.044092
                        }
                      ],
                      "others_margin": -0.188222
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06180046126246452,
                    "model_output": 0.0618,
                    "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.0266
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0089
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0047
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0047
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": -0.002,
                      "total": 0.0618,
                      "log_link": true,
                      "margin_base": -2.462406,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.374313
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.164139
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.090281
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.082174
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.077018
                        }
                      ],
                      "others_margin": -0.032459
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.02324848249554634,
                    "model_output": 0.0232,
                    "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.0423
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0186
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0061
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0025
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0023
                        }
                      ],
                      "others": -0.004,
                      "total": 0.0232,
                      "log_link": true,
                      "margin_base": -2.359917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.593625
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.439784
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.199218
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.093963
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.087292
                        }
                      ],
                      "others_margin": -0.1623
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03640952333807945,
                    "model_output": 0.0364,
                    "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.0372
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0152
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.008
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0059
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.004
                        }
                      ],
                      "others": -0.0027,
                      "total": 0.0364,
                      "log_link": true,
                      "margin_base": -2.326414,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.479987
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.289015
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.19333
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.146276
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.097823
                        }
                      ],
                      "others_margin": -0.072634
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.10704955458641052,
                    "model_output": 0.107,
                    "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.1382
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0484
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0304
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0085
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0073
                        }
                      ],
                      "others": -0.0158,
                      "total": 0.107,
                      "log_link": true,
                      "margin_base": -1.127039,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.556316
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.30223
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.250002
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.076518
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.060948
                        }
                      ],
                      "others_margin": -0.136344
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3211660087108612,
                    "model_output": 0.3212,
                    "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.4131
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2168
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0537
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0355
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0307
                        }
                      ],
                      "others": -0.0269,
                      "total": 0.3212,
                      "log_link": false,
                      "margin_base": 0.990465,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.413073
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.216752
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.053679
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.035501
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.030679
                        }
                      ],
                      "others_margin": -0.026972
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.674549102783203,
                    "model_output": 6.6745,
                    "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.0858
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0445
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0189
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0075
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0069
                        }
                      ],
                      "others": -0.0108,
                      "total": 6.6745,
                      "log_link": false,
                      "margin_base": 6.848871,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.085843
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.044522
                        },
                        {
                          "name": "rating",
                          "margin": -0.018863
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007523
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.006899
                        }
                      ],
                      "others_margin": -0.010671
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0370, quality 0.752)",
              "stats": {
                "key_pass": 0.3476,
                "expected_assists": 0.033,
                "assists": 0.0641,
                "assist_rate": 0.0641,
                "expected_goals": 0.0241,
                "goals": 0.0378,
                "goal_rate": 0.0378,
                "shots_on_target": 0.111,
                "total_shots": 0.333,
                "rating": 6.6745,
                "minutes": 16.54,
                "total_pass": 8.7303,
                "accurate_pass": 8.0602,
                "duels_won": 0.2351,
                "total_long_balls": 0.2766,
                "accurate_long_balls": 0.2766,
                "total_own_half_passes": 3.0998,
                "accurate_own_half_passes": 3.0998,
                "total_opp_half_passes": 5.6305,
                "accurate_opp_half_passes": 4.9604,
                "crosses_total": 0.8699,
                "crosses_accurate": 0.2351,
                "touches": 12.8073,
                "possession_lost": 2.3772,
                "dispossessed": 0.2351,
                "duels_lost": 1.5622,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1998,
                "tackles_won": 0.0,
                "tackles": 0.2351,
                "clearances": 0.2766,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.2766,
                "fouls_drawn": 0.0,
                "blocks": 0.1998,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.9352,
                "total_progression": 18.7773,
                "progressive_carries": 0.4703,
                "shots_off_target": 0.222
              },
              "params": {
                "market_value_eur": 35000000,
                "quality_factor": 0.752,
                "boost_factor": 1.037,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0260)",
              "stats": {
                "key_pass": 0.3476,
                "expected_assists": 0.033,
                "assists": 0.0624,
                "assist_rate": 0.0624,
                "expected_goals": 0.0241,
                "goals": 0.0368,
                "goal_rate": 0.0368,
                "shots_on_target": 0.1081,
                "total_shots": 0.3284,
                "rating": 6.6745,
                "minutes": 16.54,
                "total_pass": 8.7303,
                "accurate_pass": 8.0602,
                "duels_won": 0.2351,
                "total_long_balls": 0.2766,
                "accurate_long_balls": 0.2766,
                "total_own_half_passes": 3.0998,
                "accurate_own_half_passes": 3.0998,
                "total_opp_half_passes": 5.6305,
                "accurate_opp_half_passes": 4.9604,
                "crosses_total": 0.8632,
                "crosses_accurate": 0.2351,
                "touches": 12.8073,
                "possession_lost": 2.3772,
                "dispossessed": 0.2351,
                "duels_lost": 1.5622,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1986,
                "tackles_won": 0.004,
                "tackles": 0.2351,
                "clearances": 0.2766,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.2734,
                "fouls_drawn": 0.0119,
                "blocks": 0.1998,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.9352,
                "total_progression": 18.7773,
                "progressive_carries": 0.4703,
                "shots_off_target": 0.222
              },
              "params": {
                "blend_weight": 0.026,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1838,
                "prior_reliability": 0.08,
                "competition": "Premier League",
                "squad": "Everton"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.0,
                  "after": 0.0119
                },
                {
                  "stat": "totalCross",
                  "before": 0.8699,
                  "after": 0.8632
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.5 to 26.4 expected minutes (appearance prob 0.53)",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0495,
                "assists": 0.0936,
                "assist_rate": 0.0936,
                "expected_goals": 0.0362,
                "goals": 0.0552,
                "goal_rate": 0.0552,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4
              },
              "params": {
                "expected_minutes": 26.4,
                "projection_minutes": 16.54,
                "minutes_scale": 1.5,
                "appearance_probability": 0.525
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0495,
                "assists": 0.0936,
                "assist_rate": 0.0936,
                "expected_goals": 0.0362,
                "goals": 0.0552,
                "goal_rate": 0.0552,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.69 (squad xG sum 1.3341, xG scale 1.2691, xA scale 1.3838, team xA 1.10 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2204,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.693,
                "squad_xg_sum": 1.3341,
                "squad_xa_sum": 0.7953,
                "team_expected_assists": 1.1005,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2691,
                "xa_scale": 1.3838,
                "opponent_lambda": 1.022,
                "scoreline_reset": true,
                "appearance_weight": 0.525
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0362,
                  "after": 0.0459
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0495,
                  "after": 0.0685
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached for display (match squad rank 14 by projected rating, fifa_overall 77.0; not used by the projection)",
              "stats": {
                "key_pass": 0.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "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.2204,
                "creation_factor": 1.25,
                "fifa_overall": 77.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": 2871,
                "fifa_rank": 1429.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.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0236,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2204,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0236,
                "scorer_weight": 0.0294,
                "squad_weight_total": 1.9354,
                "weight_share": 0.0152,
                "finishing_factor": 1.2204,
                "appearance_weight": 0.525,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Thierno Barry",
                    "weight": 0.708,
                    "already": 0,
                    "effective_weight": 0.708,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.3195
                  }
                ]
              }
            },
            {
              "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.5214,
                "expected_assists": 0.0685,
                "assist_rate": 0.0936,
                "assists": 0,
                "expected_goals": 0.0459,
                "goal_rate": 0.0552,
                "goals": 0,
                "shots_on_target": 0.1622,
                "total_shots": 0.4952,
                "rating": 6.6745,
                "minutes": 26.4,
                "total_pass": 13.0954,
                "accurate_pass": 12.0903,
                "duels_won": 0.3527,
                "total_long_balls": 0.4149,
                "accurate_long_balls": 0.4149,
                "total_own_half_passes": 4.6497,
                "accurate_own_half_passes": 4.6497,
                "total_opp_half_passes": 8.4458,
                "accurate_opp_half_passes": 7.4406,
                "crosses_total": 1.2948,
                "crosses_accurate": 0.3527,
                "touches": 19.211,
                "possession_lost": 3.5658,
                "dispossessed": 0.2351,
                "duels_lost": 2.3433,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2979,
                "tackles_won": 0.006,
                "tackles": 0.3527,
                "clearances": 0.4149,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 1.0506,
                "fouls": 0.4101,
                "fouls_drawn": 0.0179,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 4.4028,
                "total_progression": 28.166,
                "progressive_carries": 0.7055,
                "shots_off_target": 0.333,
                "bench_appearance_probability": 0.525,
                "bench_expected_minutes": 26.4,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.254,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0236,
                "projected_assists": 0,
                "assist_probability": 0.0348,
                "finishing_factor": 1.2204,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0348,
                "provider_weight": 0.045,
                "squad_weight_total": 1.0337,
                "weight_share": 0.0435,
                "creation_factor": 1.25,
                "appearance_weight": 0.525,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Grealish",
                    "weight": 0.237,
                    "already": 0,
                    "effective_weight": 0.237,
                    "runner_up": "Kiernan Dewsbury-Hall",
                    "runner_up_effective_weight": 0.1934,
                    "blocked_own_goal": [
                      "Thierno Barry"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.69,
        "expected_assists": 1.1,
        "total_shots": 15,
        "shots_on_target": 3,
        "total_passes": 392,
        "interceptions": 6,
        "tackles": 17,
        "avg_rating": 6.88,
        "possession_estimated_pct": 53.6,
        "pressing_actions_per_90": 8.1
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Sorba Thomas",
        "attacker_role": "ST",
        "attacker_market_value": 14500000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.574,
        "defenders": [
          "Jarrad Branthwaite",
          "Vitaliy Mykolenko"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.736,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1266,
        "xg_multiplier": 0.8393,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Jarrad Branthwaite",
            "role": "CB",
            "market_value": 41000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Vitaliy Mykolenko",
            "role": "CB",
            "market_value": 26000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Sorba Thomas (ST) faces tough defensive resistance against Jarrad Branthwaite and Vitaliy Mykolenko in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€14M vs €34M avg). Matchup xG multiplier ×0.84 (×1.00 = his usual level). Projected xG contribution: 0.127 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Oli McBurnie",
        "attacker_role": "ST",
        "attacker_market_value": 5400000,
        "attacker_height": 188,
        "attacker_skill_quality": 0.467,
        "defenders": [
          "Jarrad Branthwaite",
          "Vitaliy Mykolenko"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.736,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.226,
        "xg_multiplier": 0.7864,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Jarrad Branthwaite",
            "role": "CB",
            "market_value": 41000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Vitaliy Mykolenko",
            "role": "CB",
            "market_value": 26000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Oli McBurnie (ST) is heavily outmatched defensively against Jarrad Branthwaite and Vitaliy Mykolenko in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€5M vs €34M avg). Matchup xG multiplier ×0.79 (×1.00 = his usual level). Projected xG contribution: 0.226 — with very limited chance creation expected."
      },
      {
        "attacker": "Mohamed Belloumi",
        "attacker_role": "ST",
        "attacker_market_value": 5700000,
        "attacker_height": 177,
        "attacker_skill_quality": 0.471,
        "defenders": [
          "Jarrad Branthwaite",
          "Vitaliy Mykolenko"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.736,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1566,
        "xg_multiplier": 0.7242,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.5,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Jarrad Branthwaite",
            "role": "CB",
            "market_value": 41000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Vitaliy Mykolenko",
            "role": "CB",
            "market_value": 26000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Mohamed Belloumi (ST) is heavily outmatched defensively against Jarrad Branthwaite and Vitaliy Mykolenko in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€6M vs €34M avg). Matchup xG multiplier ×0.72 (×1.00 = his usual level). Projected xG contribution: 0.157 — with very limited chance creation expected."
      },
      {
        "attacker": "Regan Slater",
        "attacker_role": "LM",
        "attacker_market_value": 5100000,
        "attacker_height": 173,
        "attacker_skill_quality": 0.463,
        "defenders": [
          "Ainsley Maitland-Niles"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.533,
        "duel_zone": "Left Mid vs Right Back — Wide Channel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.388,
        "xg_contribution": 0.077,
        "xg_multiplier": 0.8945,
        "shots_in_zone": 1.4,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.1,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ainsley Maitland-Niles",
            "role": "RB",
            "market_value": 10900000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.612
          }
        ],
        "duel_analysis": "Regan Slater (LM) faces tough defensive resistance against Ainsley Maitland-Niles in a direct 1v1 contest. Duel win probability: 39%.  Matchup xG multiplier ×0.89 (×1.00 = his usual level). Projected xG contribution: 0.077 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Ryan Giles",
        "attacker_role": "LWB",
        "attacker_market_value": 10900000,
        "attacker_height": 179,
        "attacker_skill_quality": 0.533,
        "defenders": [
          "Ainsley Maitland-Niles",
          "Jordan Pickford"
        ],
        "defender_roles": [
          "RB",
          "GK"
        ],
        "def_skill_quality_avg": 0.55,
        "duel_zone": "LWB vs RW + RB",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.269,
        "xg_contribution": 0.0029,
        "xg_multiplier": 0.9541,
        "shots_in_zone": 0.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 2.4,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ainsley Maitland-Niles",
            "role": "RB",
            "market_value": 10900000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.731
          },
          {
            "player": "Jordan Pickford",
            "role": "GK",
            "market_value": 13900000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.731
          }
        ],
        "duel_analysis": "Ryan Giles (LWB) is evenly matched against Ainsley Maitland-Niles and Jordan Pickford in a 2-defender block. Duel win probability: 27%.  Matchup xG multiplier ×0.95 (×1.00 = his usual level). Projected xG contribution: 0.003 — with neither side clearly dominant."
      },
      {
        "attacker": "Lewie Coyle",
        "attacker_role": "RWB",
        "attacker_market_value": 1300000,
        "attacker_height": 173,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Kiernan Dewsbury-Hall",
          "James Tarkowski"
        ],
        "defender_roles": [
          "LW",
          "LB"
        ],
        "def_skill_quality_avg": 0.617,
        "duel_zone": "RWB vs LW + LB",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.0251,
        "xg_multiplier": 0.8221,
        "shots_in_zone": 0.7,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Kiernan Dewsbury-Hall",
            "role": "LW",
            "market_value": 38000000,
            "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
          },
          {
            "player": "James Tarkowski",
            "role": "LB",
            "market_value": 5200000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Lewie Coyle (RWB) faces tough defensive resistance against Kiernan Dewsbury-Hall and James Tarkowski in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€1M vs €22M avg). Matchup xG multiplier ×0.82 (×1.00 = his usual level). Projected xG contribution: 0.025 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Matt Crooks",
        "attacker_role": "CM",
        "attacker_market_value": 725000,
        "attacker_height": 193,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Harrison Armstrong"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.55,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.42,
        "xg_contribution": 0.0442,
        "xg_multiplier": 0.9563,
        "shots_in_zone": 1.6,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Harrison Armstrong",
            "role": "CDM",
            "market_value": 12400000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.6,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.58
          }
        ],
        "duel_analysis": "Matt Crooks (CM) is evenly matched against Harrison Armstrong in a direct 1v1 contest. Duel win probability: 42%.  Matchup xG multiplier ×0.96 (×1.00 = his usual level). Projected xG contribution: 0.044 — with neither side clearly dominant."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Kiernan Dewsbury-Hall",
        "attacker_role": "LW",
        "attacker_market_value": 38000000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.77,
        "defenders": [
          "Semi Ajayi"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "LW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.51,
        "xg_contribution": 0.2226,
        "xg_multiplier": 1.1317,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 4,
        "dribbles_successful": 1.8,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 2.5,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Semi Ajayi",
            "role": "CB",
            "market_value": 650000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.49
          }
        ],
        "duel_analysis": "Kiernan Dewsbury-Hall (LW) is slightly favored against Semi Ajayi in a direct 1v1 contest. Duel win probability: 51%. The quality gap is significant (€38M vs €1M avg). Matchup xG multiplier ×1.13 (×1.00 = his usual level). Projected xG contribution: 0.223 — creating consistent moderate threat."
      },
      {
        "attacker": "Thierno Barry",
        "attacker_role": "ST",
        "attacker_market_value": 31000000,
        "attacker_height": 195,
        "attacker_skill_quality": 0.725,
        "defenders": [
          "Semi Ajayi",
          "Nobel Mendy"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.466,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.33,
        "xg_contribution": 0.4463,
        "xg_multiplier": 1.1904,
        "shots_in_zone": 2.6,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 3,
        "aerial_won": 2.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Semi Ajayi",
            "role": "CB",
            "market_value": 650000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.67
          },
          {
            "player": "Nobel Mendy",
            "role": "CB",
            "market_value": 7700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.67
          }
        ],
        "duel_analysis": "Thierno Barry (ST) is slightly favored against Semi Ajayi and Nobel Mendy in a 2-defender block. Duel win probability: 33%. The quality gap is significant (€31M vs €4M avg). Matchup xG multiplier ×1.19 (×1.00 = his usual level). Projected xG contribution: 0.446 — creating consistent moderate threat."
      },
      {
        "attacker": "Jack Grealish",
        "attacker_role": "ST",
        "attacker_market_value": 21000000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.641,
        "defenders": [
          "Semi Ajayi",
          "Nobel Mendy"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.466,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.232,
        "xg_contribution": 0.0751,
        "xg_multiplier": 1.0466,
        "shots_in_zone": 2.2,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 1.6,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Semi Ajayi",
            "role": "CB",
            "market_value": 650000,
            "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.7,
            "defensive_success_rate": 0.768
          },
          {
            "player": "Nobel Mendy",
            "role": "CB",
            "market_value": 7700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.768
          }
        ],
        "duel_analysis": "Jack Grealish (ST) is evenly matched against Semi Ajayi and Nobel Mendy in a 2-defender block. Duel win probability: 23%. The quality gap is significant (€21M vs €4M avg). Matchup xG multiplier ×1.05 (×1.00 = his usual level). Projected xG contribution: 0.075 — with neither side clearly dominant."
      },
      {
        "attacker": "Brennan Johnson",
        "attacker_role": "ST",
        "attacker_market_value": 32000000,
        "attacker_height": 186,
        "attacker_skill_quality": 0.732,
        "defenders": [
          "Semi Ajayi",
          "Nobel Mendy"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.466,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.297,
        "xg_contribution": 0.1971,
        "xg_multiplier": 1.1422,
        "shots_in_zone": 2.5,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 3,
        "aerial_won": 1.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Semi Ajayi",
            "role": "CB",
            "market_value": 650000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.703
          },
          {
            "player": "Nobel Mendy",
            "role": "CB",
            "market_value": 7700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.703
          }
        ],
        "duel_analysis": "Brennan Johnson (ST) is slightly favored against Semi Ajayi and Nobel Mendy in a 2-defender block. Duel win probability: 30%. The quality gap is significant (€32M vs €4M avg). Matchup xG multiplier ×1.14 (×1.00 = his usual level). Projected xG contribution: 0.197 — creating consistent moderate threat."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.425,
      "away_midfield_power": 0.712,
      "home_creative_power": 0.394,
      "away_creative_power": 0.677,
      "home_defensive_power": 0.448,
      "away_defensive_power": 0.704,
      "home_dominance_ratio": 0.374,
      "home_midfield_count": 2,
      "away_midfield_count": 3,
      "home_midfield_players": [
        "Regan Slater",
        "Matt Crooks"
      ],
      "away_midfield_players": [
        "Kiernan Dewsbury-Hall",
        "Harrison Armstrong",
        "James Garner"
      ],
      "possession_advantage": "away",
      "estimated_possession_home_pct": 46.4,
      "estimated_possession_away_pct": 53.6,
      "home_pressing_actions_per_90": 6.4,
      "away_pressing_actions_per_90": 8.1,
      "home_key_passes_projected": 3.9,
      "away_key_passes_projected": 5.6,
      "home_throughball_threat": 1.8,
      "away_throughball_threat": 2.6,
      "key_personal_duel": "Regan Slater vs James Garner",
      "midfield_lambda_factor_home": 0.953,
      "midfield_lambda_factor_away": 1.042
    },
    "formation_analysis": {
      "home_formation": "5-4-1",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": 0.01,
      "away_tactical_bonus": -0.01,
      "formation_verdict": "Tactical parity between 5-4-1 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.022,
    "away_lambda": 1.693,
    "home_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "LW vs CB"
    ],
    "home_player_antagonists": {
      "Sorba Thomas": {
        "opponents": [
          "Jarrad Branthwaite",
          "Vitaliy Mykolenko"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Oli McBurnie": {
        "opponents": [
          "Jarrad Branthwaite",
          "Vitaliy Mykolenko"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Mohamed Belloumi": {
        "opponents": [
          "Jarrad Branthwaite",
          "Vitaliy Mykolenko"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Regan Slater": {
        "opponents": [
          "Ainsley Maitland-Niles",
          "James Garner"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Ryan Giles": {
        "opponents": [
          "Ainsley Maitland-Niles",
          "Jordan Pickford"
        ],
        "primary_zone": "LWB vs RW + RB",
        "source": "attacking_duel"
      },
      "Lewie Coyle": {
        "opponents": [
          "Kiernan Dewsbury-Hall",
          "James Tarkowski"
        ],
        "primary_zone": "RWB vs LW + LB",
        "source": "attacking_duel"
      },
      "Matt Crooks": {
        "opponents": [
          "Harrison Armstrong",
          "Kiernan Dewsbury-Hall"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Semi Ajayi": {
        "opponents": [
          "Kiernan Dewsbury-Hall",
          "Thierno Barry",
          "Jack Grealish",
          "Brennan Johnson"
        ],
        "primary_zone": "LW vs CB",
        "source": "defensive_duel"
      },
      "Nobel Mendy": {
        "opponents": [
          "Thierno Barry",
          "Jack Grealish",
          "Brennan Johnson"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Konstantinos Tzolakis": {
        "opponents": [
          "Brennan Johnson",
          "Thierno Barry"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "John Egan": {
        "opponents": [
          "Jack Grealish"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Jarrad Branthwaite": {
        "opponents": [
          "Sorba Thomas",
          "Oli McBurnie",
          "Mohamed Belloumi"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Vitaliy Mykolenko": {
        "opponents": [
          "Sorba Thomas",
          "Oli McBurnie",
          "Mohamed Belloumi"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Ainsley Maitland-Niles": {
        "opponents": [
          "Regan Slater",
          "Ryan Giles"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "defensive_duel"
      },
      "Jordan Pickford": {
        "opponents": [
          "Ryan Giles"
        ],
        "primary_zone": "LWB vs RW + RB",
        "source": "defensive_duel"
      },
      "Kiernan Dewsbury-Hall": {
        "opponents": [
          "Lewie Coyle",
          "Semi Ajayi",
          "Matt Crooks"
        ],
        "primary_zone": "RWB vs LW + LB",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "James Tarkowski": {
        "opponents": [
          "Lewie Coyle"
        ],
        "primary_zone": "RWB vs LW + LB",
        "source": "defensive_duel"
      },
      "Harrison Armstrong": {
        "opponents": [
          "Matt Crooks"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "defensive_duel, midfield_pairing"
      },
      "Thierno Barry": {
        "opponents": [
          "Semi Ajayi",
          "Nobel Mendy"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Jack Grealish": {
        "opponents": [
          "Semi Ajayi",
          "Nobel Mendy"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Brennan Johnson": {
        "opponents": [
          "Semi Ajayi",
          "Nobel Mendy"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "James Garner": {
        "opponents": [
          "Regan Slater"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      }
    },
    "key_tactical_insight": "Away midfield dictates play with ~54% possession expected (Regan Slater vs James Garner). Total antagonist xG — Home: 0.66, Away: 0.94. 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.9575,
      "away_gk_opposition_factor": 0.9429,
      "home_set_piece_bonus": 0.118,
      "away_set_piece_bonus": 0.18,
      "home_defensive_solidity_vs": 0.9401,
      "away_defensive_solidity_vs": 0.9908,
      "home_midfield_factor": 0.953,
      "away_midfield_factor": 1.042,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.4753,
      "away_avg_quality": 0.6704,
      "avg_quality_gap": -0.1951,
      "squad_value_gap_log": -1.4763,
      "top5_value_gap_log": -1.3056,
      "attack_value_gap_log": -1.5357,
      "elite_count_gap": -2,
      "combined_quality_gap": -0.3998,
      "stronger_lambda_boost": 0.2199,
      "weaker_lambda_suppression": 0.1279,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.6584,
          "n_duels": 7,
          "duel_confidence": 0.75,
          "result": 0.8563
        },
        {
          "label": "midfield_factor",
          "factor": 0.953,
          "result": 0.8161
        },
        {
          "label": "formation_bonus",
          "factor": 1.01,
          "result": 0.8242
        },
        {
          "label": "home_advantage",
          "factor": 1.15,
          "result": 0.9478
        },
        {
          "label": "standing_factor",
          "factor": 0.9133,
          "result": 0.8657
        },
        {
          "label": "gk_opposition",
          "factor": 0.9575,
          "result": 0.8289
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9401,
          "result": 0.7792
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.118,
          "result": 0.8972
        },
        {
          "label": "engine_clamp",
          "pre": 0.8972,
          "result": 0.8972,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.3998,
          "factor": 0.8721,
          "pre": 0.8972,
          "result": 0.7824
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 0.7824
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.2184,
          "result": 1.0004
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": true,
          "blending_weight": 0.192,
          "empirical_lambda": 1.5517,
          "result": 1.1063
        },
        {
          "label": "router_clamp",
          "pre": 1.1063,
          "result": 1.106,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": false,
          "multiplier": 1.0,
          "pre": 1.106,
          "result": 1.106,
          "available": false
        },
        {
          "label": "mismatch_pressure",
          "applied": true,
          "factor": 0.97,
          "pre": 1.106,
          "result": 1.073
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.073
        },
        {
          "label": "redistribution",
          "applied": true,
          "factor": 0.9523,
          "input_total": 2.715,
          "result": 1.0218
        },
        {
          "label": "final_clamp",
          "applied": true,
          "pre": 1.0218,
          "result": 1.022,
          "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.022
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.9411,
          "n_duels": 4,
          "duel_confidence": 0.67,
          "result": 1.109
        },
        {
          "label": "midfield_factor",
          "factor": 1.042,
          "result": 1.1556
        },
        {
          "label": "formation_bonus",
          "factor": 0.99,
          "result": 1.1441
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 1.1441
        },
        {
          "label": "standing_factor",
          "factor": 0.9332,
          "result": 1.0676
        },
        {
          "label": "gk_opposition",
          "factor": 0.9429,
          "result": 1.0067
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9908,
          "result": 0.9974
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.18,
          "result": 1.1774
        },
        {
          "label": "engine_clamp",
          "pre": 1.1774,
          "result": 1.1774,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.3998,
          "factor": 1.2199,
          "pre": 1.1774,
          "result": 1.4363
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.4363
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.187,
          "result": 1.623
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": true,
          "blending_weight": 0.192,
          "empirical_lambda": 1.5517,
          "result": 1.6093
        },
        {
          "label": "router_clamp",
          "pre": 1.6093,
          "result": 1.609,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": false,
          "multiplier": 1.0,
          "pre": 1.609,
          "result": 1.609,
          "available": false
        },
        {
          "label": "mismatch_pressure",
          "applied": true,
          "factor": 1.105,
          "pre": 1.609,
          "result": 1.778
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.778
        },
        {
          "label": "redistribution",
          "applied": true,
          "factor": 0.9523,
          "input_total": 2.715,
          "result": 1.6932
        },
        {
          "label": "final_clamp",
          "applied": true,
          "pre": 1.6932,
          "result": 1.693,
          "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.693
        }
      ],
      "home_bench_lambda_bonus": 0.2184,
      "away_bench_lambda_bonus": 0.187,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "fbref_team_priors": {
        "applied": true,
        "home_squad": "Hull City",
        "away_squad": "Everton",
        "home_goals_per90": 1.5,
        "away_goals_against_per90": 1.5,
        "away_goals_per90": 1.5,
        "home_goals_against_per90": 1.5,
        "home_empirical_lambda": 1.552,
        "away_empirical_lambda": 1.552,
        "blending_weight": 0.192
      },
      "mismatch_score_pressure_applied": true,
      "mismatch_score_pressure_gap": -0.3998,
      "mismatch_favorite_lambda_boost": 1.105,
      "mismatch_underdog_lambda_factor": 0.97,
      "pre_mismatch_home_lambda": 1.106,
      "pre_mismatch_away_lambda": 1.609,
      "competitive_underdog_floor_applied": false,
      "competitive_underdog_floor": 1.0,
      "competitive_underdog_floor_mode": "disabled_ablation",
      "pre_competitive_floor_home_lambda": 1.073,
      "pre_competitive_floor_away_lambda": 1.778,
      "pre_calibration_home_lambda": 1.1063,
      "pre_calibration_away_lambda": 1.6093,
      "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.022,
      "final_away_lambda": 1.693
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 8,
    "opponent_position": 7,
    "standing_lambda_multiplier": 0.9133,
    "attack_index": 1.016,
    "defense_concede_index": 0.785,
    "form_multiplier": 0.995,
    "team_attack_rate_contextual": 1.43,
    "opp_defense_rate_contextual": 1.11,
    "team_ppg": 1.46,
    "opponent_ppg": 1.55
  },
  "away_standing": {
    "available": true,
    "team_position": 7,
    "opponent_position": 8,
    "standing_lambda_multiplier": 0.9332,
    "attack_index": 0.903,
    "defense_concede_index": 0.927,
    "form_multiplier": 1.005,
    "team_attack_rate_contextual": 1.27,
    "opp_defense_rate_contextual": 1.31,
    "team_ppg": 1.55,
    "opponent_ppg": 1.46
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Hull vs Everton. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 5-4-1 vs 4-2-3-1 (duel lambdas: Home 1.106, Away 1.609). Final calibrated Poisson lambdas: Home 1.022, Away 1.693 (most likely score 0-1).",
    "competition": "Premier League",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 11,
      "home_fbref_players": 7,
      "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": "Hull City",
      "away_squad": "Everton",
      "home_goals_per90": 1.5,
      "away_goals_against_per90": 1.5,
      "away_goals_per90": 1.5,
      "home_goals_against_per90": 1.5,
      "home_empirical_lambda": 1.552,
      "away_empirical_lambda": 1.552,
      "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.022,
      "away_lambda": 1.693,
      "micro_duel_home_lambda": 1.106,
      "micro_duel_away_lambda": 1.609
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": true,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-10T13:35:29Z",
  "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
  }
}