{
  "match_info": {
    "home_team": "Coventry",
    "away_team": "Fulham",
    "tournament": "Premier League",
    "date": "20261024",
    "timezone": "America/New_York",
    "home_formation": "4-2-3-1",
    "away_formation": "4-2-3-1",
    "lineup_status": "unconfirmed_official",
    "lineup_source": "/matches/get-lineups",
    "lineup_confirmed": false,
    "lineup_confidence": 0.75
  },
  "prediction": {
    "most_likely_score": "1-1",
    "home_goals": 1,
    "away_goals": 1,
    "most_likely_score_probability": 0.1294,
    "most_likely_winning_score_home": "1-0",
    "most_likely_winning_score_home_probability": 0.0975,
    "most_likely_winning_score_away": "0-1",
    "most_likely_winning_score_away_probability": 0.1054,
    "match_resolution": "draw",
    "predicted_winner": "Draw",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2723,
      "shootout_home_win_probability": null,
      "shootout_away_win_probability": null,
      "penalty_home_goals": null,
      "penalty_away_goals": null,
      "penalty_score": null,
      "penalty_winner": null,
      "penalty_winner_goals": null,
      "penalty_loser_goals": null,
      "penalty_result": null,
      "home_advance_probability": null,
      "away_advance_probability": null,
      "projected_winner": null,
      "projected_winner_probability": null,
      "final_score_after_penalties": null,
      "deciding_stage": null,
      "deciding_scoreline": null,
      "deciding_scoreline_probability": null,
      "deciding_route_probability": null,
      "reason": "Tie-breaker not required for this match context."
    },
    "top_5_scorelines": [
      {
        "score": "1-1",
        "probability": 0.1294
      },
      {
        "score": "0-1",
        "probability": 0.1054
      },
      {
        "score": "1-0",
        "probability": 0.0975
      },
      {
        "score": "0-0",
        "probability": 0.0835
      },
      {
        "score": "1-2",
        "probability": 0.0831
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0835,
      "0-1": 0.1054,
      "0-2": 0.0692,
      "0-3": 0.0299,
      "0-4": 0.0097,
      "0-5": 0.0025,
      "0-6": 0.0005,
      "1-0": 0.0975,
      "1-1": 0.1294,
      "1-2": 0.0831,
      "1-3": 0.0359,
      "1-4": 0.0116,
      "1-5": 0.003,
      "1-6": 0.0007,
      "2-0": 0.0593,
      "2-1": 0.0769,
      "2-2": 0.0499,
      "2-3": 0.0216,
      "2-4": 0.007,
      "2-5": 0.0018,
      "3-0": 0.0237,
      "3-1": 0.0308,
      "3-2": 0.02,
      "3-3": 0.0086,
      "3-4": 0.0028,
      "3-5": 0.0007,
      "4-0": 0.0071,
      "4-1": 0.0092,
      "4-2": 0.006,
      "4-3": 0.0026,
      "4-4": 0.0008,
      "5-0": 0.0017,
      "5-1": 0.0022,
      "5-2": 0.0014,
      "5-3": 0.0006
    },
    "outcome": {
      "home_win": 0.341,
      "draw": 0.2723,
      "away_win": 0.3867
    },
    "markets": {
      "over_2_5_goals": 0.4557,
      "under_2_5_goals": 0.5443,
      "btts_yes": 0.5092,
      "btts_no": 0.4908,
      "home_clean_sheet": 0.2734,
      "away_clean_sheet": 0.3009
    },
    "home_ratings": {
      "DR": 6.78,
      "MCR": 6.8,
      "ATR": 6.72,
      "GK": 6.62
    },
    "away_ratings": {
      "DR": 6.89,
      "MCR": 7.13,
      "ATR": 6.82,
      "GK": 6.97
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Coventry vs Fulham. Most likely scoreline: 1-1. Lambdas derived from 6 home and 6 away individual player duels. Head-to-head: Coventry 2W-0D-0L vs Fulham over 2 meetings.",
      "key_player": "Projected scorer(s): Taiwo Awoniyi, Gonzalo García",
      "tactical_analysis": "Tactical parity between 4-2-3-1 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Caleb Yirenkyi vs Josh King will be the pivotal duel. Total antagonist xG — Home: 0.83, Away: 0.99. 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.7,
    "home_lambda": 1.201,
    "away_lambda": 1.297,
    "h2h": {
      "available": true,
      "meetings": 2,
      "home_wins": 2,
      "away_wins": 0,
      "draws": 0,
      "home_multiplier": 1.0333,
      "away_multiplier": 0.9667
    },
    "modal_scoreline": "1-1",
    "modal_scoreline_probability": 0.1294,
    "headline_policy": null
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.341,
      "draw": 0.2723,
      "away_win": 0.3867
    },
    "favorite": "Fulham",
    "favorite_win_probability": 0.3867,
    "fair_spread": -0.096,
    "fair_total": 2.498,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Coventry",
        "estimate": 1.201,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Fulham",
        "estimate": 1.297,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.4557,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.5092,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Coventry",
        "estimate": 1.0,
        "probability": 0.2734,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Fulham",
        "estimate": 1.0,
        "probability": 0.3009,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Taiwo Awoniyi (Coventry)",
        "estimate": 0.2958,
        "probability": 0.2561,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Gonzalo García (Fulham)",
        "estimate": 0.3354,
        "probability": 0.2849,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Jack Rudoni (Coventry)",
        "estimate": 0.177,
        "probability": 0.1622,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Alex Iwobi (Fulham)",
        "estimate": 0.2094,
        "probability": 0.1889,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.498,
      "expected_total_shots": 26,
      "expected_total_passes": 826,
      "expected_pressing_actions_per_90": 14.3,
      "possession_home_pct": 48.5,
      "possession_away_pct": 51.5,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Fulham",
      "favorite_win_probability": 0.3867,
      "script": "Fulham is the fair winner side, but the baseline remains narrow: fair spread -0.10 goals and fair total 2.50.",
      "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; Coventry must keep the match inside one goal.",
      "late_game": "A Fulham lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Fulham chance creation leans on Gonzalo García against Ethan Pinnock, Bobby Thomas in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Coventry: starters carry the main goal usage through Taiwo Awoniyi; bench watchlist: Sidiki Cherif, Victor Torp.",
      "Fulham: starters carry the main goal usage through Gonzalo García; bench watchlist: Kevin, Rodrigo Muniz, Emile Smith Rowe.",
      "Assist usage should flow through Jack Rudoni, Alex Iwobi; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Fulham 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.25 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 Coventry 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 Fulham.",
      "Coventry 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": {
    "Coventry": {
      "formation": "4-2-3-1",
      "players": {
        "Taiwo Awoniyi": {
          "player_id": 359664,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 14,
          "height": 183,
          "market_value": 7600000,
          "stats": {
            "expected_goals": 0.2958,
            "goal_rate": 0.2401,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0521,
            "key_pass": 1,
            "rating": 6.6978,
            "minutes": 72,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 5.7246,
            "dispossessed": 0.4064,
            "duels_lost": 6,
            "aerial_lost": 4,
            "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": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.3936,
            "offsides": 1,
            "ball_carries": 6,
            "total_progression": 26,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8857,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Calvin Bassey, Timothy Castagne",
            "opponent_faced": "Calvin Bassey, Timothy Castagne",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.2561,
            "projected_assists": 0,
            "assist_probability": 0.0508,
            "finishing_factor": 0.9175,
            "creation_factor": 0.8,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 30,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2757,
                "expected_assists": 0.0002,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 2,
                "accurate_pass": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 53,
                "rating": 5.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0623,
                "expected_assists": 0.0148,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 8,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 71,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3131,
                "expected_assists": 0.001,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.9255,
                "expected_assists": 0.0319,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 12,
                "key_pass": 2,
                "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": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 20,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 4,
                "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": 14023964,
              "match_date": "2026-05-24",
              "home_team": "Nottingham Forest",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 28,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1654,
                "expected_assists": 0.0003,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 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": 14023956,
              "match_date": "2026-05-17",
              "home_team": "Manchester United",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1819,
                "expected_assists": 0.3489,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 8,
                "key_pass": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 73,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.153,
                "expected_assists": 0.0195,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 11,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023925,
              "match_date": "2026-05-04",
              "home_team": "Chelsea",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 8.6,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.1098,
                "expected_assists": 0.003,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 7,
                "accurate_pass": 5,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023932,
              "match_date": "2026-04-24",
              "home_team": "Sunderland",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 10,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0105,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3704,
            "combined_rank_score": 1659.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2677.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6978,
            "source_file": "data/player_rankings.csv",
            "player_name": "Taiwo Awoniyi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jean Lucas",
                  "ranking": 3699
                },
                {
                  "player_name": "André Almeida",
                  "ranking": 3700
                },
                {
                  "player_name": "Jean-Ricner Bellegarde",
                  "ranking": 3701
                },
                {
                  "player_name": "Kervin Arriaga",
                  "ranking": 3702
                },
                {
                  "player_name": "Bryan Gil",
                  "ranking": 3703
                }
              ],
              "lower": [
                {
                  "player_name": "Ismail Jakobs",
                  "ranking": 3705
                },
                {
                  "player_name": "Denis Suárez",
                  "ranking": 3706
                },
                {
                  "player_name": "Ernest Muçi",
                  "ranking": 3707
                },
                {
                  "player_name": "Gabriel Suazo",
                  "ranking": 3708
                },
                {
                  "player_name": "İrfan Can Kahveci",
                  "ranking": 3709
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.762,
          "history_matches": 22,
          "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": 22,
            "data_confidence": 0.762,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9994,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 111.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 3.24,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.08
            },
            "rationale": "XGBoost regressor (F_service) evaluated 22 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.08, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3008,
                "goals": 0.2739,
                "goal_rate": 0.2739,
                "shots_on_target": 0.7085,
                "total_shots": 2.0328,
                "expected_assists": 0.0437,
                "key_pass": 0.6436,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1443,
                "accurate_pass": 8.3441,
                "duels_won": 2.5077,
                "total_long_balls": 0.2047,
                "accurate_long_balls": 0.2047,
                "total_opp_half_passes": 6.1459,
                "accurate_opp_half_passes": 4.5197,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2978,
                "possession_lost": 5.728,
                "dispossessed": 0.4066,
                "duels_lost": 5.7849,
                "aerial_lost": 3.6262,
                "total_contest": 1.0289,
                "won_contest": 0.8242,
                "ball_recovery": 2.3443,
                "challenges_lost": 0.4184,
                "fouls": 1.129,
                "fouls_drawn": 0.8399,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.2047,
                "tackles_won": 0.3477,
                "tackles": 0.3477,
                "clearances": 0.3787,
                "blocks": 0.1257,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3787,
                "xgot": 0.4001,
                "offsides": 0.7145,
                "ball_carries": 6.4188,
                "total_progression": 26.0373,
                "progressive_carries": 1.2951,
                "shots_off_target": 1.3243
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1543,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 53.0,
                    "is_starting": true,
                    "weight": 0.1312,
                    "rating": 5.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1115,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0948,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0806,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Bournemouth",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0685,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Manchester United",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0582,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Newcastle United",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0495,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-04",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0421,
                    "rating": 8.6
                  },
                  {
                    "match_date": "2026-04-24",
                    "opponent": "Sunderland",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0357,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.2912,
                  "totalOppositionHalfPasses": 4.0011,
                  "accurateOppositionHalfPasses": 3.1626,
                  "accuratePass": 5.2858,
                  "totalShots": 1.5055
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.3008284270763397,
                    "model_output": 0.3008,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0675
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0302
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0108
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": -0.0092
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0077
                        }
                      ],
                      "others": -0.0041,
                      "total": 0.3008,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.293573
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.107738
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.035723
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": -0.030608
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.025626
                        }
                      ],
                      "others_margin": -0.013332
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.273876816034317,
                    "model_output": 0.2739,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0598
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0294
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0231
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0091
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0081
                        }
                      ],
                      "others": 0.0227,
                      "total": 0.2739,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.258925
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.106313
                        },
                        {
                          "name": "goals",
                          "margin": -0.082494
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.034629
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.031766
                        }
                      ],
                      "others_margin": 0.086557
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7085356712341309,
                    "model_output": 0.7085,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1887
                        },
                        {
                          "name": "goals",
                          "contribution": -0.038
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0341
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0256
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0204
                        }
                      ],
                      "others": -0.0177,
                      "total": 0.7085,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.301561
                        },
                        {
                          "name": "goals",
                          "margin": -0.053882
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.048421
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.034845
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.027655
                        }
                      ],
                      "others_margin": -0.024584
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.0328235626220703,
                    "model_output": 2.0328,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4985
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1027
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0488
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0482
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0402
                        }
                      ],
                      "others": 0.0101,
                      "total": 2.0328,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.498511
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.102725
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.048767
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.048194
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.040199
                        }
                      ],
                      "others_margin": 0.010066
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0436539463698864,
                    "model_output": 0.0437,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0231
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0112
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.008
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0058
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0146,
                      "total": 0.0437,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.306745
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.136687
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.110825
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.087938
                        },
                        {
                          "name": "rating",
                          "margin": -0.069282
                        }
                      ],
                      "others_margin": -0.291509
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.643589437007904,
                    "model_output": 0.6436,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2039
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0574
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0468
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0365
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0291
                        }
                      ],
                      "others": -0.071,
                      "total": 0.6436,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.262039
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.067111
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.058211
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.04787
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.039888
                        }
                      ],
                      "others_margin": -0.104666
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.697839260101318,
                    "model_output": 6.6978,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0422
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0332
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.013
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0114
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0111
                        }
                      ],
                      "others": -0.0662,
                      "total": 6.6978,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.042155
                        },
                        {
                          "name": "rating",
                          "margin": -0.033205
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.013027
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011401
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.011081
                        }
                      ],
                      "others_margin": -0.066044
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 22,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9994, quality 0.494)",
              "stats": {
                "expected_goals": 0.3006,
                "goals": 0.2737,
                "goal_rate": 0.2737,
                "shots_on_target": 0.7081,
                "total_shots": 2.0316,
                "expected_assists": 0.0436,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1283,
                "fouls_drawn": 0.8394,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.2046,
                "tackles_won": 0.3475,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3785,
                "xgot": 0.3999,
                "offsides": 0.7141,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.3235
              },
              "params": {
                "market_value_eur": 7600000,
                "quality_factor": 0.4939,
                "boost_factor": 0.9994,
                "reference_quality": 0.505,
                "history_matches": 22,
                "history_shrink": 0.1852,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0096)",
              "stats": {
                "expected_goals": 0.3006,
                "goals": 0.2711,
                "goal_rate": 0.2711,
                "shots_on_target": 0.7138,
                "total_shots": 2.0371,
                "expected_assists": 0.0436,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3785,
                "xgot": 0.3999,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.3235
              },
              "params": {
                "blend_weight": 0.0096,
                "history_matches": 22,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8046,
                "prior_reliability": 0.08,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalOffside",
                  "before": 0.7141,
                  "after": 0.7201
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7081,
                  "after": 0.7138
                },
                {
                  "stat": "totalShots",
                  "before": 2.0316,
                  "after": 2.0371
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3006,
                "goals": 0.2711,
                "goal_rate": 0.2711,
                "shots_on_target": 0.7138,
                "total_shots": 2.0373,
                "expected_assists": 0.0436,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3785,
                "xgot": 0.3999,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.3235
              },
              "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.2662,
                "goals": 0.2401,
                "goal_rate": 0.2401,
                "shots_on_target": 0.6322,
                "total_shots": 1.8044,
                "expected_assists": 0.0436,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3352,
                "xgot": 0.3542,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.1722,
                "duel_xg_multiplier": 0.8857,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Calvin Bassey, Timothy Castagne",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.8857,
                  "skill_edge": -0.0697,
                  "height_edge": -0.008,
                  "attacker_skill": 0.4939,
                  "defender_skill": 0.6488,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Calvin Bassey",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Timothy Castagne",
                      "market_value": 7600000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.524
                    }
                  ],
                  "xg_override": 0.2662
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.0373,
                  "after": 1.8044
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.3235,
                  "after": 1.1722
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7138,
                  "after": 0.6322
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3999,
                  "after": 0.3542
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.3785,
                  "after": 0.3352
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3006,
                  "after": 0.2662
                },
                {
                  "stat": "goals",
                  "before": 0.2711,
                  "after": 0.2401
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.2662,
                "goal_rate": 0.2401,
                "goals": 0,
                "shots_on_target": 0.6322,
                "total_shots": 1.8044,
                "expected_assists": 0.0436,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3352,
                "xgot": 0.3542,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.1722,
                "duel_xg_multiplier": 0.8857,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.2958,
                "goal_rate": 0.2401,
                "goals": 0,
                "shots_on_target": 0.6322,
                "total_shots": 1.8044,
                "expected_assists": 0.0521,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3352,
                "xgot": 0.3936,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.1722,
                "duel_xg_multiplier": 0.8857,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9175,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2662,
                  "after": 0.2958
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0436,
                  "after": 0.0521
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 74.0)",
              "stats": {
                "expected_goals": 0.2958,
                "goal_rate": 0.2401,
                "goals": 0,
                "shots_on_target": 0.6322,
                "total_shots": 1.8044,
                "expected_assists": 0.0521,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3352,
                "xgot": 0.3936,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.1722,
                "duel_xg_multiplier": 0.8857,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9175,
                "creation_factor": 0.8,
                "fifa_overall": 74.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": 3704,
                "fifa_rank": 2677.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.2958,
                "goal_rate": 0.2401,
                "goals": 1,
                "shots_on_target": 0.6322,
                "total_shots": 1.8044,
                "expected_assists": 0.0521,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3352,
                "xgot": 0.3936,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.1722,
                "duel_xg_multiplier": 0.8857,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2561,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9175,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.2561,
                "goal_rate": 0.2401,
                "scorer_weight": 0.2714,
                "squad_weight_total": 1.2197,
                "weight_share": 0.2225,
                "finishing_factor": 0.9175,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.2958,
                "goal_rate": 0.2401,
                "goals": 1,
                "shots_on_target": 0.6322,
                "total_shots": 1.8044,
                "expected_assists": 0.0521,
                "key_pass": 0.6432,
                "rating": 6.6978,
                "minutes": 72.41,
                "total_pass": 10.1382,
                "accurate_pass": 8.3391,
                "duels_won": 2.5062,
                "total_long_balls": 0.2046,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 6.1422,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 19.2862,
                "possession_lost": 5.7246,
                "dispossessed": 0.4064,
                "duels_lost": 5.7814,
                "aerial_lost": 3.624,
                "total_contest": 1.0283,
                "won_contest": 0.8237,
                "ball_recovery": 2.3429,
                "challenges_lost": 0.4181,
                "fouls": 1.1239,
                "fouls_drawn": 0.8378,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.2026,
                "tackles_won": 0.3442,
                "tackles": 0.3475,
                "clearances": 0.3785,
                "blocks": 0.1256,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3352,
                "xgot": 0.3936,
                "offsides": 0.7201,
                "ball_carries": 6.4149,
                "total_progression": 26.0217,
                "progressive_carries": 1.2943,
                "shots_off_target": 1.1722,
                "duel_xg_multiplier": 0.8857,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2561,
                "projected_assists": 0,
                "assist_probability": 0.0508,
                "finishing_factor": 0.9175,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0508,
                "assist_rate": 0.0,
                "provider_weight": 0.0417,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0563,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ephron Mason-Clark": {
          "player_id": 861315,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 178,
          "market_value": 17200000,
          "stats": {
            "expected_goals": 0.1966,
            "goal_rate": 0.138,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0749,
            "key_pass": 1,
            "rating": 6.7261,
            "minutes": 65,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 5,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 20,
            "possession_lost": 8.5562,
            "dispossessed": 0.7401,
            "duels_lost": 6,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "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": 0,
            "xgot": 0.0469,
            "offsides": 1,
            "ball_carries": 5,
            "total_progression": 22,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9283,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Calvin Bassey, Timothy Castagne",
            "opponent_faced": "Calvin Bassey, Timothy Castagne",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1785,
            "projected_assists": 0,
            "assist_probability": 0.0722,
            "finishing_factor": 0.8286,
            "creation_factor": 0.8,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 12,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2518,
                "total_shots": 0,
                "total_pass": 7,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 61,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0043,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 6,
                "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": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 45,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0225,
                "expected_assists": 0.0478,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "key_pass": 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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 60,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4871,
                "expected_assists": 0.0057,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 9,
                "accurate_pass": 5,
                "clearances": 2,
                "aerial_won": 5,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 71,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 58,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0556,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "key_pass": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3588,
            "combined_rank_score": 1556.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 915.0,
            "sofascore_rating": 6.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2197.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7261,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ephron Mason-Clark",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alisson Santos",
                  "ranking": 3583
                },
                {
                  "player_name": "Dakonam Djené",
                  "ranking": 3584
                },
                {
                  "player_name": "Álvaro Ferllo",
                  "ranking": 3585
                },
                {
                  "player_name": "Sivera",
                  "ranking": 3586
                },
                {
                  "player_name": "Kike García",
                  "ranking": 3587
                }
              ],
              "lower": [
                {
                  "player_name": "Zubeldia",
                  "ranking": 3589
                },
                {
                  "player_name": "Hugo Rincón",
                  "ranking": 3590
                },
                {
                  "player_name": "Christos Zafeiris",
                  "ranking": 3591
                },
                {
                  "player_name": "Luiz Felipe",
                  "ranking": 3592
                },
                {
                  "player_name": "Catena",
                  "ranking": 3593
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.631,
          "history_matches": 6,
          "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": 6,
            "data_confidence": 0.631,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0133,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 58.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.04
            },
            "rationale": "XGBoost regressor (F_service) evaluated 6 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.04, 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.1881,
                "goals": 0.1485,
                "goal_rate": 0.1485,
                "shots_on_target": 0.4546,
                "total_shots": 1.4146,
                "expected_assists": 0.0619,
                "key_pass": 0.6325,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.1136,
                "accurate_pass": 6.5451,
                "duels_won": 2.3148,
                "total_long_balls": 0.4352,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.826,
                "accurate_opp_half_passes": 5.0575,
                "crosses_total": 1.9734,
                "crosses_accurate": 0.1408,
                "touches": 19.4871,
                "possession_lost": 8.4439,
                "dispossessed": 0.7304,
                "duels_lost": 5.6668,
                "aerial_lost": 2.3587,
                "total_contest": 1.0112,
                "won_contest": 0.0,
                "ball_recovery": 2.1656,
                "challenges_lost": 0.5393,
                "fouls": 1.1679,
                "fouls_drawn": 0.6763,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0023,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0449,
                "offsides": 0.8052,
                "ball_carries": 5.0312,
                "total_progression": 21.35,
                "progressive_carries": 1.4067,
                "shots_off_target": 0.96
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.2408,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.2047,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1257,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.076,
                  "totalOppositionHalfPasses": 7.3863,
                  "accurateOppositionHalfPasses": 5.2845,
                  "accuratePass": 6.6546,
                  "totalShots": 0.6177
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.18807119131088257,
                    "model_output": 0.1881,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0677
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0374
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0211
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0166
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.015
                        }
                      ],
                      "others": -0.0174,
                      "total": 0.1881,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.294394
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.151895
                        },
                        {
                          "name": "goals",
                          "margin": -0.096863
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.08372
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.07568
                        }
                      ],
                      "others_margin": -0.088597
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14854662120342255,
                    "model_output": 0.1485,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0613
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0373
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.029
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0201
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0112
                        }
                      ],
                      "others": -0.0399,
                      "total": 0.1485,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.264785
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.152594
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.137346
                        },
                        {
                          "name": "goals",
                          "margin": -0.107314
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.061035
                        }
                      ],
                      "others_margin": -0.23744
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.4546452462673187,
                    "model_output": 0.4546,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1522
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0592
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0535
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0476
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0351
                        }
                      ],
                      "others": -0.0384,
                      "total": 0.4546,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.249812
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.089918
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.088821
                        },
                        {
                          "name": "goals",
                          "margin": -0.086252
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.068713
                        }
                      ],
                      "others_margin": -0.081084
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.414612889289856,
                    "model_output": 1.4146,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4388
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.194
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0666
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0646
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0552
                        }
                      ],
                      "others": -0.0245,
                      "total": 1.4146,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.43883
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.193963
                        },
                        {
                          "name": "goals",
                          "margin": -0.066576
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.064564
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.055243
                        }
                      ],
                      "others_margin": -0.02462
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06191350147128105,
                    "model_output": 0.0619,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0182
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0088
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0059
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0057
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0037
                        }
                      ],
                      "others": -0.0154,
                      "total": 0.0619,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.248281
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.113187
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.082803
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.079929
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.048519
                        }
                      ],
                      "others_margin": -0.220791
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6324959397315979,
                    "model_output": 0.6325,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1918
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.067
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0397
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0348
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0257
                        }
                      ],
                      "others": -0.0726,
                      "total": 0.6325,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.248344
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.07994
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.050602
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.046589
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.035792
                        }
                      ],
                      "others_margin": -0.108515
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7260870933532715,
                    "model_output": 6.7261,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0499
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0313
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0187
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0132
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0106
                        }
                      ],
                      "others": -0.0557,
                      "total": 6.7261,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.049946
                        },
                        {
                          "name": "rating",
                          "margin": -0.031328
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.01866
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.013161
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010644
                        }
                      ],
                      "others_margin": -0.055665
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 6,
                  "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.0133, quality 0.603)",
              "stats": {
                "expected_goals": 0.1906,
                "goals": 0.1505,
                "goal_rate": 0.1505,
                "shots_on_target": 0.4607,
                "total_shots": 1.4335,
                "expected_assists": 0.0627,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 1.9996,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1834,
                "fouls_drawn": 0.6853,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0455,
                "offsides": 0.8159,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9728
              },
              "params": {
                "market_value_eur": 17200000,
                "quality_factor": 0.6027,
                "boost_factor": 1.0133,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0118)",
              "stats": {
                "expected_goals": 0.1906,
                "goals": 0.1487,
                "goal_rate": 0.1487,
                "shots_on_target": 0.4553,
                "total_shots": 1.4166,
                "expected_assists": 0.0627,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0455,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9728
              },
              "params": {
                "blend_weight": 0.0118,
                "history_matches": 6,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7172,
                "prior_reliability": 0.04,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.9996,
                  "after": 2.0607
                },
                {
                  "stat": "wasFouled",
                  "before": 0.6853,
                  "after": 0.7055
                },
                {
                  "stat": "totalShots",
                  "before": 1.4335,
                  "after": 1.4166
                },
                {
                  "stat": "fouls",
                  "before": 1.1834,
                  "after": 1.1977
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4607,
                  "after": 0.4553
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1906,
                "goals": 0.1487,
                "goal_rate": 0.1487,
                "shots_on_target": 0.4553,
                "total_shots": 1.4281,
                "expected_assists": 0.0627,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0455,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9728
              },
              "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.1769,
                "goals": 0.138,
                "goal_rate": 0.138,
                "shots_on_target": 0.4227,
                "total_shots": 1.3258,
                "expected_assists": 0.0627,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0422,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9031,
                "duel_xg_multiplier": 0.9283,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Calvin Bassey, Timothy Castagne",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9283,
                  "skill_edge": -0.0208,
                  "height_edge": -0.028,
                  "attacker_skill": 0.6027,
                  "defender_skill": 0.6488,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Calvin Bassey",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Timothy Castagne",
                      "market_value": 7600000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.524
                    }
                  ],
                  "xg_override": 0.1769
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.4281,
                  "after": 1.3258
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9728,
                  "after": 0.9031
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4553,
                  "after": 0.4227
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1906,
                  "after": 0.1769
                },
                {
                  "stat": "goals",
                  "before": 0.1487,
                  "after": 0.138
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1769,
                "goal_rate": 0.138,
                "goals": 0,
                "shots_on_target": 0.4227,
                "total_shots": 1.3258,
                "expected_assists": 0.0627,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0422,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9031,
                "duel_xg_multiplier": 0.9283,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1966,
                "goal_rate": 0.138,
                "goals": 0,
                "shots_on_target": 0.4227,
                "total_shots": 1.3258,
                "expected_assists": 0.0749,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0469,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9031,
                "duel_xg_multiplier": 0.9283,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8286,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1769,
                  "after": 0.1966
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0627,
                  "after": 0.0749
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 75.0)",
              "stats": {
                "expected_goals": 0.1966,
                "goal_rate": 0.138,
                "goals": 0,
                "shots_on_target": 0.4227,
                "total_shots": 1.3258,
                "expected_assists": 0.0749,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0469,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9031,
                "duel_xg_multiplier": 0.9283,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8286,
                "creation_factor": 0.8,
                "fifa_overall": 75.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": 3588,
                "fifa_rank": 2197.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1966,
                "goal_rate": 0.138,
                "goals": 0,
                "shots_on_target": 0.4227,
                "total_shots": 1.3258,
                "expected_assists": 0.0749,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0469,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9031,
                "duel_xg_multiplier": 0.9283,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1785,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8286,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1785,
                "goal_rate": 0.138,
                "scorer_weight": 0.1629,
                "squad_weight_total": 1.2197,
                "weight_share": 0.1336,
                "finishing_factor": 0.8286,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.1966,
                "goal_rate": 0.138,
                "goals": 0,
                "shots_on_target": 0.4227,
                "total_shots": 1.3258,
                "expected_assists": 0.0749,
                "key_pass": 0.6409,
                "rating": 6.7261,
                "minutes": 64.55,
                "total_pass": 10.2481,
                "accurate_pass": 6.6321,
                "duels_won": 2.3456,
                "total_long_balls": 0.441,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.9301,
                "accurate_opp_half_passes": 5.1248,
                "crosses_total": 2.0607,
                "crosses_accurate": 0.1427,
                "touches": 19.7463,
                "possession_lost": 8.5562,
                "dispossessed": 0.7401,
                "duels_lost": 5.7422,
                "aerial_lost": 2.3901,
                "total_contest": 1.0246,
                "won_contest": 0.0,
                "ball_recovery": 2.1944,
                "challenges_lost": 0.5465,
                "fouls": 1.1977,
                "fouls_drawn": 0.7055,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 1.0156,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0469,
                "offsides": 0.8204,
                "ball_carries": 5.0981,
                "total_progression": 21.634,
                "progressive_carries": 1.4254,
                "shots_off_target": 0.9031,
                "duel_xg_multiplier": 0.9283,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1785,
                "projected_assists": 0,
                "assist_probability": 0.0722,
                "finishing_factor": 0.8286,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0722,
                "assist_rate": 0.0,
                "provider_weight": 0.0599,
                "squad_weight_total": 0.7398,
                "weight_share": 0.081,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jack Rudoni": {
          "player_id": 979565,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 5,
          "height": 185,
          "market_value": 21000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.177,
            "assist_rate": 0.1214,
            "assists": 1,
            "expected_goals": 0.2131,
            "goal_rate": 0.2209,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 6.8583,
            "minutes": 79,
            "total_pass": 20,
            "accurate_pass": 15,
            "duels_won": 5,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 15,
            "accurate_opp_half_passes": 11,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 40,
            "possession_lost": 14.1054,
            "dispossessed": 1.1653,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "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.4669,
            "ball_carries": 10,
            "total_progression": 56,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.971,
            "dribbles_attempted": 4,
            "dribbles_successful": 1.6,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.46,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "David Affengruber",
            "opponent_faced": "David Affengruber",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1919,
            "projected_assists": 1,
            "assist_probability": 0.1622,
            "finishing_factor": 1.1203,
            "creation_factor": 0.8643,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 87,
                "rating": 6.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1446,
                "expected_assists": 0.0111,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 10,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 83,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.0369,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 74,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0892,
                "expected_assists": 0.198,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 73,
                "rating": 8.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3298,
                "expected_assists": 0.7345,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 4,
                "clearances": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 63,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2889,
                "expected_assists": 0.0948,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 10,
                "accurate_pass": 5,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 71,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0579,
                "expected_assists": 0.089,
                "total_shots": 1,
                "total_pass": 35,
                "accurate_pass": 28,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 20,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1455,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "tackles": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3549,
            "combined_rank_score": 1517.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2212.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.8583,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jack Rudoni",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jindřich Staněk",
                  "ranking": 3544
                },
                {
                  "player_name": "Janis Blaswich",
                  "ranking": 3545
                },
                {
                  "player_name": "Jobe Bellingham",
                  "ranking": 3546
                },
                {
                  "player_name": "Omar El Hilali",
                  "ranking": 3547
                },
                {
                  "player_name": "Matt Turner",
                  "ranking": 3548
                }
              ],
              "lower": [
                {
                  "player_name": "Nemanja Matić",
                  "ranking": 3550
                },
                {
                  "player_name": "Reiss Nelson",
                  "ranking": 3551
                },
                {
                  "player_name": "Tolu Arokodare",
                  "ranking": 3552
                },
                {
                  "player_name": "Giovanni Simeone",
                  "ranking": 3553
                },
                {
                  "player_name": "Nuno Santos",
                  "ranking": 3554
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.688,
          "history_matches": 7,
          "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": 7,
            "data_confidence": 0.688,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.017,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 7 historical appearances across 8 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.2542,
                "expected_assists": 0.1458,
                "assists": 0.1193,
                "assist_rate": 0.1193,
                "expected_goals": 0.1942,
                "goals": 0.2237,
                "goal_rate": 0.2237,
                "shots_on_target": 0.6365,
                "total_shots": 1.7217,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.5532,
                "accurate_pass": 14.6714,
                "duels_won": 4.469,
                "total_long_balls": 0.5545,
                "accurate_long_balls": 0.1479,
                "total_own_half_passes": 4.3919,
                "accurate_own_half_passes": 3.4915,
                "total_opp_half_passes": 15.1614,
                "accurate_opp_half_passes": 11.18,
                "crosses_total": 3.97,
                "crosses_accurate": 1.4579,
                "touches": 39.069,
                "possession_lost": 13.8696,
                "dispossessed": 1.1458,
                "duels_lost": 6.2381,
                "aerial_won": 1.096,
                "aerial_lost": 1.2736,
                "interceptions": 0.4066,
                "tackles_won": 0.2997,
                "tackles": 0.8882,
                "clearances": 0.8846,
                "total_contest": 2.4298,
                "won_contest": 0.8604,
                "challenges_lost": 0.8727,
                "fouls": 1.3766,
                "fouls_drawn": 1.6244,
                "blocks": 0.2997,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3604,
                "xgot": 0.4255,
                "ball_carries": 9.4667,
                "total_progression": 54.7757,
                "progressive_carries": 2.301,
                "shots_off_target": 1.0852
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0833,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.5475,
                  "totalShots": 1.3564,
                  "expectedGoals": 0.2899,
                  "expectedAssists": 0.1603,
                  "onTargetScoringAttempt": 0.7425
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.2542462348937988,
                    "model_output": 1.2542,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0968
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0813
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0869
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0699
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0528
                        }
                      ],
                      "others": 0.0776,
                      "total": 1.2542,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.102745
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.078793
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.077926
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.05856
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.043939
                        }
                      ],
                      "others_margin": 0.063957
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.14581242203712463,
                    "model_output": 0.1458,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.011
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0117
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0112
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0061
                        }
                      ],
                      "others": 0.0135,
                      "total": 0.1458,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.120335
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.113907
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.098305
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.05211
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.047579
                        }
                      ],
                      "others_margin": 0.09705
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.11934740096330643,
                    "model_output": 0.1193,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0094
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0093
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0098
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0098
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0093
                        }
                      ],
                      "others": -0.0157,
                      "total": 0.1193,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.102305
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.09144
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.087947
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.081198
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.071721
                        }
                      ],
                      "others_margin": -0.123064
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.1942010521888733,
                    "model_output": 0.1942,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0454
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0165
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0114
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0112
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0092
                        }
                      ],
                      "others": 0.0065,
                      "total": 0.1942,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.393864
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111948
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.070373
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.065104
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.050172
                        }
                      ],
                      "others_margin": 0.034597
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2237107753753662,
                    "model_output": 0.2237,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0231
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0221
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0191
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0156
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0155
                        }
                      ],
                      "others": 0.029,
                      "total": 0.2237,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.208786
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.165975
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.12406
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.090994
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.082863
                        }
                      ],
                      "others_margin": 0.139365
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6365247368812561,
                    "model_output": 0.6365,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0691
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0709
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0631
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0385
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0205
                        }
                      ],
                      "others": 0.0894,
                      "total": 0.6365,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.192319
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.164995
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126894
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.070293
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.036694
                        }
                      ],
                      "others_margin": 0.151234
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.7217466831207275,
                    "model_output": 1.7217,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.2692
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.166
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0834
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0562
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0548
                        }
                      ],
                      "others": 0.0952,
                      "total": 1.7217,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.26922
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.166008
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.08342
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.056232
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.054765
                        }
                      ],
                      "others_margin": 0.095206
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.85828161239624,
                    "model_output": 6.8583,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0661
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0276
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0247
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0242
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0181
                        }
                      ],
                      "others": -0.0055,
                      "total": 6.8583,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.066051
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.027551
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.024665
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.024235
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.018136
                        }
                      ],
                      "others_margin": -0.005506
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0170, quality 0.641)",
              "stats": {
                "key_pass": 1.2756,
                "expected_assists": 0.1483,
                "assists": 0.1214,
                "assist_rate": 0.1214,
                "expected_goals": 0.1975,
                "goals": 0.2275,
                "goal_rate": 0.2275,
                "shots_on_target": 0.6473,
                "total_shots": 1.751,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.1146,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3665,
                "xgot": 0.4327,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.1036
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.017,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.2756,
                "expected_assists": 0.1483,
                "assists": 0.1214,
                "assist_rate": 0.1214,
                "expected_goals": 0.1975,
                "goals": 0.2275,
                "goal_rate": 0.2275,
                "shots_on_target": 0.6473,
                "total_shots": 1.751,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.1146,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3665,
                "xgot": 0.4327,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.1036
              },
              "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.2756,
                "expected_assists": 0.1483,
                "assists": 0.1214,
                "assist_rate": 0.1214,
                "expected_goals": 0.1918,
                "goals": 0.2209,
                "goal_rate": 0.2209,
                "shots_on_target": 0.6285,
                "total_shots": 1.7002,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.2,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3559,
                "xgot": 0.4202,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.0716,
                "duel_xg_multiplier": 0.971,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.46,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "David Affengruber",
                "opponent_faced": "David Affengruber",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "David Affengruber",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                  "duel_win_rate": 0.46,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.971,
                  "skill_edge": -0.0197,
                  "height_edge": 0.0,
                  "attacker_skill": 0.6408,
                  "defender_skill": 0.6846,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "David Affengruber",
                      "market_value": 18100000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.6846
                    }
                  ],
                  "xg_override": 0.1918
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.1146,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 1.751,
                  "after": 1.7002
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.1036,
                  "after": 1.0716
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6473,
                  "after": 0.6285
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.4327,
                  "after": 0.4202
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.3665,
                  "after": 0.3559
                },
                {
                  "stat": "goals",
                  "before": 0.2275,
                  "after": 0.2209
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1975,
                  "after": 0.1918
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 1.2756,
                "expected_assists": 0.1483,
                "assist_rate": 0.1214,
                "assists": 0,
                "expected_goals": 0.1918,
                "goal_rate": 0.2209,
                "goals": 0,
                "shots_on_target": 0.6285,
                "total_shots": 1.7002,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.2,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3559,
                "xgot": 0.4202,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.0716,
                "duel_xg_multiplier": 0.971,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.46,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "David Affengruber",
                "opponent_faced": "David Affengruber",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "key_pass": 1.2756,
                "expected_assists": 0.177,
                "assist_rate": 0.1214,
                "assists": 0,
                "expected_goals": 0.2131,
                "goal_rate": 0.2209,
                "goals": 0,
                "shots_on_target": 0.6285,
                "total_shots": 1.7002,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.2,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3559,
                "xgot": 0.4669,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.0716,
                "duel_xg_multiplier": 0.971,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.46,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "David Affengruber",
                "opponent_faced": "David Affengruber",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1203,
                "creation_factor": 0.8643
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1918,
                  "after": 0.2131
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1483,
                  "after": 0.177
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 75.0)",
              "stats": {
                "key_pass": 1.2756,
                "expected_assists": 0.177,
                "assist_rate": 0.1214,
                "assists": 0,
                "expected_goals": 0.2131,
                "goal_rate": 0.2209,
                "goals": 0,
                "shots_on_target": 0.6285,
                "total_shots": 1.7002,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.2,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3559,
                "xgot": 0.4669,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.0716,
                "duel_xg_multiplier": 0.971,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.46,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "David Affengruber",
                "opponent_faced": "David Affengruber",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1203,
                "creation_factor": 0.8643,
                "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": 3549,
                "fifa_rank": 2212.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.2756,
                "expected_assists": 0.177,
                "assist_rate": 0.1214,
                "assists": 0,
                "expected_goals": 0.2131,
                "goal_rate": 0.2209,
                "goals": 0,
                "shots_on_target": 0.6285,
                "total_shots": 1.7002,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.2,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3559,
                "xgot": 0.4669,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.0716,
                "duel_xg_multiplier": 0.971,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.46,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "David Affengruber",
                "opponent_faced": "David Affengruber",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1919,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1203,
                "creation_factor": 0.8643,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1919,
                "goal_rate": 0.2209,
                "scorer_weight": 0.2387,
                "squad_weight_total": 1.2197,
                "weight_share": 0.1957,
                "finishing_factor": 1.1203,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.2756,
                "expected_assists": 0.177,
                "assist_rate": 0.1214,
                "assists": 1,
                "expected_goals": 0.2131,
                "goal_rate": 0.2209,
                "goals": 0,
                "shots_on_target": 0.6285,
                "total_shots": 1.7002,
                "rating": 6.8583,
                "minutes": 79.34,
                "total_pass": 19.8856,
                "accurate_pass": 14.9208,
                "duels_won": 4.545,
                "total_long_balls": 0.5639,
                "accurate_long_balls": 0.1504,
                "total_own_half_passes": 4.4666,
                "accurate_own_half_passes": 3.5509,
                "total_opp_half_passes": 15.4191,
                "accurate_opp_half_passes": 11.3701,
                "crosses_total": 4.0375,
                "crosses_accurate": 1.4827,
                "touches": 39.7332,
                "possession_lost": 14.1054,
                "dispossessed": 1.1653,
                "duels_lost": 6.3441,
                "aerial_won": 1.2,
                "aerial_lost": 1.2953,
                "interceptions": 0.4135,
                "tackles_won": 0.3048,
                "tackles": 0.9033,
                "clearances": 0.8996,
                "total_contest": 2.4711,
                "won_contest": 0.875,
                "challenges_lost": 0.8875,
                "fouls": 1.4,
                "fouls_drawn": 1.652,
                "blocks": 0.3048,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3559,
                "xgot": 0.4669,
                "ball_carries": 9.6276,
                "total_progression": 55.7069,
                "progressive_carries": 2.3401,
                "shots_off_target": 1.0716,
                "duel_xg_multiplier": 0.971,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.46,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "David Affengruber",
                "opponent_faced": "David Affengruber",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1919,
                "projected_assists": 1,
                "assist_probability": 0.1622,
                "finishing_factor": 1.1203,
                "creation_factor": 0.8643,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.1622,
                "assist_rate": 0.1214,
                "provider_weight": 0.153,
                "squad_weight_total": 0.7398,
                "weight_share": 0.2068,
                "creation_factor": 0.8643,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Brandon Thomas-Asante": {
          "player_id": 846061,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 23,
          "height": 180,
          "market_value": 16500000,
          "stats": {
            "expected_goals": 0.1484,
            "goal_rate": 0.1687,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 2,
            "expected_assists": 0.037,
            "key_pass": 1,
            "rating": 6.7382,
            "minutes": 82,
            "total_pass": 11,
            "accurate_pass": 6,
            "duels_won": 9,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 34,
            "possession_lost": 11.7897,
            "dispossessed": 0.5466,
            "duels_lost": 7,
            "aerial_lost": 4,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 3,
            "assist_rate": 0.5755,
            "assists": 0,
            "interceptions": 3,
            "tackles_won": 0,
            "tackles": 2,
            "clearances": 1,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0048,
            "offsides": 0,
            "ball_carries": 10,
            "total_progression": 57,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9352,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Calvin Bassey, Timothy Castagne",
            "opponent_faced": "Calvin Bassey, Timothy Castagne",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1379,
            "projected_assists": 0,
            "assist_probability": 0.0363,
            "finishing_factor": 1.1912,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 78,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0872,
                "expected_assists": 0.0031,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 3,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 3,
                "aerial_won": 2,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0236,
                "expected_assists": 0.0082,
                "total_shots": 1,
                "total_pass": 17,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.125,
                "expected_assists": 0.007,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 11,
                "accurate_pass": 5,
                "tackles": 3,
                "interceptions": 4,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 13,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 17,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2057,
                "expected_assists": 0.0286,
                "total_shots": 2,
                "shots_on_target": 2,
                "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": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 32,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "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": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0169,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "interceptions": 4,
                "clearances": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 4122,
            "combined_rank_score": 2117.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 969.0,
            "sofascore_rating": 6.35,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3266.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.7382,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brandon Thomas-Asante",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pol Fernández",
                  "ranking": 4117
                },
                {
                  "player_name": "Carlos Domínguez",
                  "ranking": 4118
                },
                {
                  "player_name": "Fredrik Sjøvold",
                  "ranking": 4119
                },
                {
                  "player_name": "Domagoj Bradarić",
                  "ranking": 4120
                },
                {
                  "player_name": "Sheyko Studer",
                  "ranking": 4121
                }
              ],
              "lower": [
                {
                  "player_name": "Ali Ahmed",
                  "ranking": 4123
                },
                {
                  "player_name": "Josip Brekalo",
                  "ranking": 4124
                },
                {
                  "player_name": "Alexander Bernhardsson",
                  "ranking": 4125
                },
                {
                  "player_name": "Andrija Bulatovic",
                  "ranking": 4126
                },
                {
                  "player_name": "Alberto Reina",
                  "ranking": 4127
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.698,
          "history_matches": 7,
          "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": 7,
            "data_confidence": 0.698,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0113,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 101.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0733
            },
            "rationale": "XGBoost regressor (F_service) evaluated 7 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.07, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1413,
                "goals": 0.182,
                "goal_rate": 0.182,
                "shots_on_target": 0.4862,
                "total_shots": 1.7102,
                "expected_assists": 0.0307,
                "key_pass": 0.5731,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.1525,
                "accurate_pass": 5.8988,
                "duels_won": 8.4098,
                "total_long_balls": 0.7262,
                "accurate_long_balls": 0.5335,
                "total_opp_half_passes": 9.0939,
                "accurate_opp_half_passes": 4.2597,
                "crosses_total": 0.6862,
                "crosses_accurate": 0.0,
                "touches": 33.809,
                "possession_lost": 11.658,
                "dispossessed": 0.5405,
                "duels_lost": 7.3489,
                "aerial_lost": 4.1067,
                "total_contest": 2.7357,
                "won_contest": 1.034,
                "ball_recovery": 3.2077,
                "challenges_lost": 0.6862,
                "fouls": 0.3138,
                "fouls_drawn": 3.0811,
                "assists": 0.5806,
                "assist_rate": 0.5806,
                "interceptions": 2.6192,
                "tackles_won": 0.2667,
                "tackles": 1.8413,
                "clearances": 0.9129,
                "blocks": 0.5335,
                "big_chances_created": 0.3138,
                "big_chances_missed": 0.0,
                "xgot": 0.0045,
                "offsides": 0.3138,
                "ball_carries": 10.0186,
                "total_progression": 56.7469,
                "progressive_carries": 0.9129,
                "shots_off_target": 1.224
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.1356,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1152,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.098,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0715,
                  "totalOppositionHalfPasses": 7.5301,
                  "accurateOppositionHalfPasses": 3.7617,
                  "accuratePass": 5.0611,
                  "totalShots": 1.3789
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.14127855002880096,
                    "model_output": 0.1413,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0512
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0383
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0237
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0161
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0131
                        }
                      ],
                      "others": -0.0166,
                      "total": 0.1413,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.229949
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.166915
                        },
                        {
                          "name": "goals",
                          "margin": -0.119222
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.08972
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.079881
                        }
                      ],
                      "others_margin": -0.111297
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.18203452229499817,
                    "model_output": 0.182,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0515
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0343
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0084
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0066
                        }
                      ],
                      "others": -0.0208,
                      "total": 0.182,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.226647
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.145156
                        },
                        {
                          "name": "goals",
                          "margin": -0.087848
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.040741
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.032151
                        }
                      ],
                      "others_margin": -0.107812
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.48617514967918396,
                    "model_output": 0.4862,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1428
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.063
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0508
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0457
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0115
                        }
                      ],
                      "others": -0.0218,
                      "total": 0.4862,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.236161
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.097313
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.086059
                        },
                        {
                          "name": "goals",
                          "margin": -0.084291
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.022295
                        }
                      ],
                      "others_margin": -0.044126
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.7101320028305054,
                    "model_output": 1.7101,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4623
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0687
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0591
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0415
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.04
                        }
                      ],
                      "others": -0.0036,
                      "total": 1.7101,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.462304
                        },
                        {
                          "name": "goals",
                          "margin": -0.068689
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.059068
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.041522
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.039957
                        }
                      ],
                      "others_margin": -0.003599
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.030674802139401436,
                    "model_output": 0.0307,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0148
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.01
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0099
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0055
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0109,
                      "total": 0.0307,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.261563
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.184129
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.18079
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.116001
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.060342
                        }
                      ],
                      "others_margin": -0.307783
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5730562210083008,
                    "model_output": 0.5731,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.171
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.061
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0414
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0377
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0357
                        }
                      ],
                      "others": -0.1026,
                      "total": 0.5731,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.224179
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.074278
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.053839
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.05164
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.051437
                        }
                      ],
                      "others_margin": -0.164769
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.738209247589111,
                    "model_output": 6.7382,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0419
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.016
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0088
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0087
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0087
                        }
                      ],
                      "others": -0.0298,
                      "total": 6.7382,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.041921
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.016016
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.008762
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.008728
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.008673
                        }
                      ],
                      "others_margin": -0.029812
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "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.0113, quality 0.595)",
              "stats": {
                "expected_goals": 0.1429,
                "goals": 0.1841,
                "goal_rate": 0.1841,
                "shots_on_target": 0.4917,
                "total_shots": 1.7295,
                "expected_assists": 0.031,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.694,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.3173,
                "fouls_drawn": 3.1159,
                "assists": 0.5872,
                "assist_rate": 0.5872,
                "interceptions": 2.6488,
                "tackles_won": 0.2697,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0046,
                "offsides": 0.3173,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.2378
              },
              "params": {
                "market_value_eur": 16500000,
                "quality_factor": 0.5953,
                "boost_factor": 1.0113,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0199)",
              "stats": {
                "expected_goals": 0.1429,
                "goals": 0.1804,
                "goal_rate": 0.1804,
                "shots_on_target": 0.4819,
                "total_shots": 1.6952,
                "expected_assists": 0.031,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assists": 0.5755,
                "assist_rate": 0.5755,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0046,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.2378
              },
              "params": {
                "blend_weight": 0.0199,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9066,
                "prior_reliability": 0.0733,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.7295,
                  "after": 1.6952
                },
                {
                  "stat": "totalCross",
                  "before": 0.694,
                  "after": 0.7129
                },
                {
                  "stat": "interceptionWon",
                  "before": 2.6488,
                  "after": 2.6617
                },
                {
                  "stat": "wasFouled",
                  "before": 3.1159,
                  "after": 3.1031
                },
                {
                  "stat": "goalAssist",
                  "before": 0.5872,
                  "after": 0.5755
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4917,
                  "after": 0.4819
                },
                {
                  "stat": "fouls",
                  "before": 0.3173,
                  "after": 0.311
                },
                {
                  "stat": "totalOffside",
                  "before": 0.3173,
                  "after": 0.311
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1429,
                "goals": 0.1804,
                "goal_rate": 0.1804,
                "shots_on_target": 0.4819,
                "total_shots": 1.7197,
                "expected_assists": 0.031,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assists": 0.5755,
                "assist_rate": 0.5755,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0046,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.2378
              },
              "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.1336,
                "goals": 0.1687,
                "goal_rate": 0.1687,
                "shots_on_target": 0.4507,
                "total_shots": 1.6083,
                "expected_assists": 0.031,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assists": 0.5755,
                "assist_rate": 0.5755,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0043,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.1576,
                "duel_xg_multiplier": 0.9352,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Calvin Bassey, Timothy Castagne",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9352,
                  "skill_edge": -0.0241,
                  "height_edge": -0.02,
                  "attacker_skill": 0.5953,
                  "defender_skill": 0.6488,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Calvin Bassey",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Timothy Castagne",
                      "market_value": 7600000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.524
                    }
                  ],
                  "xg_override": 0.1336
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.7197,
                  "after": 1.6083
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2378,
                  "after": 1.1576
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4819,
                  "after": 0.4507
                },
                {
                  "stat": "goals",
                  "before": 0.1804,
                  "after": 0.1687
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1429,
                  "after": 0.1336
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1336,
                "goal_rate": 0.1687,
                "goals": 0,
                "shots_on_target": 0.4507,
                "total_shots": 1.6083,
                "expected_assists": 0.031,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assist_rate": 0.5755,
                "assists": 0,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0043,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.1576,
                "duel_xg_multiplier": 0.9352,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              },
              "changes": [
                {
                  "stat": "assists",
                  "before": 1.0,
                  "after": 0
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.1484,
                "goal_rate": 0.1687,
                "goals": 0,
                "shots_on_target": 0.4507,
                "total_shots": 1.6083,
                "expected_assists": 0.037,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assist_rate": 0.5755,
                "assists": 0,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0048,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.1576,
                "duel_xg_multiplier": 0.9352,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1912,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1336,
                  "after": 0.1484
                },
                {
                  "stat": "expected_assists",
                  "before": 0.031,
                  "after": 0.037
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 73.0)",
              "stats": {
                "expected_goals": 0.1484,
                "goal_rate": 0.1687,
                "goals": 0,
                "shots_on_target": 0.4507,
                "total_shots": 1.6083,
                "expected_assists": 0.037,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assist_rate": 0.5755,
                "assists": 0,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0048,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.1576,
                "duel_xg_multiplier": 0.9352,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1912,
                "creation_factor": 1.25,
                "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": 4122,
                "fifa_rank": 3266.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1484,
                "goal_rate": 0.1687,
                "goals": 0,
                "shots_on_target": 0.4507,
                "total_shots": 1.6083,
                "expected_assists": 0.037,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assist_rate": 0.5755,
                "assists": 0,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0048,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.1576,
                "duel_xg_multiplier": 0.9352,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1379,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1912,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1379,
                "goal_rate": 0.1687,
                "scorer_weight": 0.1768,
                "squad_weight_total": 1.2197,
                "weight_share": 0.1449,
                "finishing_factor": 1.1912,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.1484,
                "goal_rate": 0.1687,
                "goals": 0,
                "shots_on_target": 0.4507,
                "total_shots": 1.6083,
                "expected_assists": 0.037,
                "key_pass": 0.5795,
                "rating": 6.7382,
                "minutes": 81.59,
                "total_pass": 11.2785,
                "accurate_pass": 5.9655,
                "duels_won": 8.5048,
                "total_long_balls": 0.7344,
                "accurate_long_balls": 0.5395,
                "total_opp_half_passes": 9.1967,
                "accurate_opp_half_passes": 4.3078,
                "crosses_total": 0.7129,
                "crosses_accurate": 0.0,
                "touches": 34.191,
                "possession_lost": 11.7897,
                "dispossessed": 0.5466,
                "duels_lost": 7.4319,
                "aerial_lost": 4.1531,
                "total_contest": 2.7666,
                "won_contest": 1.0457,
                "ball_recovery": 3.2439,
                "challenges_lost": 0.694,
                "fouls": 0.311,
                "fouls_drawn": 3.1031,
                "assist_rate": 0.5755,
                "assists": 0,
                "interceptions": 2.6617,
                "tackles_won": 0.2643,
                "tackles": 1.8621,
                "clearances": 0.9232,
                "blocks": 0.5395,
                "big_chances_created": 0.3173,
                "big_chances_missed": 0.0,
                "xgot": 0.0048,
                "offsides": 0.311,
                "ball_carries": 10.1318,
                "total_progression": 57.3881,
                "progressive_carries": 0.9232,
                "shots_off_target": 1.1576,
                "duel_xg_multiplier": 0.9352,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Calvin Bassey, Timothy Castagne",
                "opponent_faced": "Calvin Bassey, Timothy Castagne",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1379,
                "projected_assists": 0,
                "assist_probability": 0.0363,
                "finishing_factor": 1.1912,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0363,
                "assist_rate": 0.5755,
                "provider_weight": 0.0462,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0625,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Matt Grimes": {
          "player_id": 340713,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 6,
          "height": 178,
          "market_value": 5200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0746,
            "assist_rate": 0.0636,
            "assists": 0,
            "expected_goals": 0.0286,
            "goal_rate": 0.0389,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.8491,
            "minutes": 87,
            "total_pass": 44,
            "accurate_pass": 37,
            "duels_won": 3,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 17,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 55,
            "possession_lost": 9.7941,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 2,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 15,
            "total_progression": 58,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.749,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.249,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Sander Berge",
            "opponent_faced": "Sander Berge",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0282,
            "projected_assists": 0,
            "assist_probability": 0.0719,
            "finishing_factor": 1.1744,
            "creation_factor": 1.0098,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0142,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 42,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "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": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 83,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0093,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 32,
                "tackles": 1,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0215,
                "expected_assists": 0.0632,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 84,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0459,
                "expected_assists": 0.0238,
                "total_shots": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "tackles": 1,
                "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": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0396,
                "expected_assists": 0.0037,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0062,
                "expected_assists": 0.0381,
                "total_shots": 1,
                "total_pass": 108,
                "accurate_pass": 93,
                "key_pass": 1,
                "clearances": 1,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0145,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 50,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3140,
            "combined_rank_score": 1108.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1772.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8491,
            "source_file": "data/player_rankings.csv",
            "player_name": "Matt Grimes",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Che Adams",
                  "ranking": 3135
                },
                {
                  "player_name": "Carlos Vicente",
                  "ranking": 3136
                },
                {
                  "player_name": "Lautaro Di Lollo",
                  "ranking": 3137
                },
                {
                  "player_name": "Hugo Larsson",
                  "ranking": 3138
                },
                {
                  "player_name": "Kasper Dolberg",
                  "ranking": 3139
                }
              ],
              "lower": [
                {
                  "player_name": "Sem Steijn",
                  "ranking": 3141
                },
                {
                  "player_name": "David Brooks",
                  "ranking": 3142
                },
                {
                  "player_name": "André Silva",
                  "ranking": 3143
                },
                {
                  "player_name": "Luciano Valente",
                  "ranking": 3144
                },
                {
                  "player_name": "Michael Keane",
                  "ranking": 3145
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.707,
          "history_matches": 7,
          "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": 7,
            "data_confidence": 0.707,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.995,
            "fbref_prior_metrics": {
              "squad": "Coventry 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.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 7 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.7234,
                "expected_assists": 0.0628,
                "assists": 0.0663,
                "assist_rate": 0.0663,
                "expected_goals": 0.0345,
                "goals": 0.0542,
                "goal_rate": 0.0542,
                "shots_on_target": 0.1403,
                "total_shots": 0.5811,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 44.1802,
                "accurate_pass": 37.0981,
                "duels_won": 3.3419,
                "total_long_balls": 5.8117,
                "accurate_long_balls": 2.7753,
                "total_own_half_passes": 21.2274,
                "accurate_own_half_passes": 19.5964,
                "total_opp_half_passes": 22.9528,
                "accurate_opp_half_passes": 17.5018,
                "crosses_total": 2.3573,
                "crosses_accurate": 0.3931,
                "touches": 55.0271,
                "possession_lost": 9.8433,
                "dispossessed": 0.0,
                "duels_lost": 2.6575,
                "aerial_won": 0.9252,
                "aerial_lost": 0.8644,
                "interceptions": 0.4955,
                "tackles_won": 0.7703,
                "tackles": 1.8196,
                "clearances": 1.7787,
                "total_contest": 0.1595,
                "won_contest": 0.0,
                "challenges_lost": 0.6475,
                "fouls": 0.9861,
                "fouls_drawn": 0.5972,
                "blocks": 0.3138,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 15.0553,
                "total_progression": 58.6876,
                "progressive_carries": 0.3187,
                "shots_off_target": 0.4408
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.1171,
                  "totalShots": 0.5083,
                  "expectedGoals": 0.0148,
                  "expectedAssists": 0.0235,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7234346270561218,
                    "model_output": 0.7234,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.143
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1297
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0937
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0896
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.047
                        }
                      ],
                      "others": -0.1415,
                      "total": 0.7234,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.148347
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.133507
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.098195
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.093694
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.052923
                        }
                      ],
                      "others_margin": -0.178656
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06279412657022476,
                    "model_output": 0.0628,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0227
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0193
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0115
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.008
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0063
                        }
                      ],
                      "others": -0.0237,
                      "total": 0.0628,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.234685
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.195312
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121508
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.082198
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.070637
                        }
                      ],
                      "others_margin": -0.321223
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06633847206830978,
                    "model_output": 0.0663,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": -0.0104
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0083
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0067
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0069
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        }
                      ],
                      "others": -0.0109,
                      "total": 0.0663,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": -0.127078
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.114706
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.092525
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.088278
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.064114
                        }
                      ],
                      "others_margin": -0.150626
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03447480499744415,
                    "model_output": 0.0345,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0349
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0098
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.007
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0064
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0113,
                      "total": 0.0345,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.464858
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.18252
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.154331
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.141331
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.062203
                        }
                      ],
                      "others_margin": -0.280027
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05415406823158264,
                    "model_output": 0.0542,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0251
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0095
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0088
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0087
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0051
                        }
                      ],
                      "others": -0.0157,
                      "total": 0.0542,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.291114
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.137582
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127228
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.125649
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.075735
                        }
                      ],
                      "others_margin": -0.255095
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14029373228549957,
                    "model_output": 0.1403,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0871
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0453
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0297
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0243
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.0377,
                      "total": 0.1403,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.310872
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.210431
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.166625
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.138442
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.055697
                        }
                      ],
                      "others_margin": -0.238061
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5810641646385193,
                    "model_output": 0.5811,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2414
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1274
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0601
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.039
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0361
                        }
                      ],
                      "others": -0.1666,
                      "total": 0.5811,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.241374
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12744
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.060117
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.038959
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.036133
                        }
                      ],
                      "others_margin": -0.166689
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.84909725189209,
                    "model_output": 6.8491,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0683
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0285
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0217
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0197
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0158
                        }
                      ],
                      "others": -0.0466,
                      "total": 6.8491,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.068263
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.028501
                        },
                        {
                          "name": "rating",
                          "margin": -0.021722
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.019744
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.015792
                        }
                      ],
                      "others_margin": -0.046459
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9950, quality 0.465)",
              "stats": {
                "key_pass": 0.7198,
                "expected_assists": 0.0625,
                "assists": 0.066,
                "assist_rate": 0.066,
                "expected_goals": 0.0343,
                "goals": 0.0539,
                "goal_rate": 0.0539,
                "shots_on_target": 0.1396,
                "total_shots": 0.5782,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.3455,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 0.9206,
                "aerial_lost": 0.8601,
                "interceptions": 0.493,
                "tackles_won": 0.7664,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9812,
                "fouls_drawn": 0.5942,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.4386
              },
              "params": {
                "market_value_eur": 5200000,
                "quality_factor": 0.4646,
                "boost_factor": 0.995,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0361)",
              "stats": {
                "key_pass": 0.7198,
                "expected_assists": 0.0625,
                "assists": 0.0636,
                "assist_rate": 0.0636,
                "expected_goals": 0.0343,
                "goals": 0.052,
                "goal_rate": 0.052,
                "shots_on_target": 0.1346,
                "total_shots": 0.5749,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 0.9206,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.4386
              },
              "params": {
                "blend_weight": 0.0361,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9718,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.3455,
                  "after": 2.4362
                },
                {
                  "stat": "fouls",
                  "before": 0.9812,
                  "after": 0.9458
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7664,
                  "after": 0.7387
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.493,
                  "after": 0.4752
                },
                {
                  "stat": "wasFouled",
                  "before": 0.5942,
                  "after": 0.6078
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1396,
                  "after": 0.1346
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7198,
                "expected_assists": 0.0625,
                "assists": 0.0636,
                "assist_rate": 0.0636,
                "expected_goals": 0.0343,
                "goals": 0.052,
                "goal_rate": 0.052,
                "shots_on_target": 0.1346,
                "total_shots": 0.5749,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 0.9206,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.4386
              },
              "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.7198,
                "expected_assists": 0.0625,
                "assists": 0.0636,
                "assist_rate": 0.0636,
                "expected_goals": 0.0257,
                "goals": 0.0389,
                "goal_rate": 0.0389,
                "shots_on_target": 0.1008,
                "total_shots": 0.4306,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 1.0,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.3285,
                "duel_xg_multiplier": 0.749,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Sander Berge",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.249,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.749,
                  "skill_edge": -0.1107,
                  "height_edge": -0.06,
                  "attacker_skill": 0.4759,
                  "defender_skill": 0.7219,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Sander Berge",
                      "market_value": 26000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7219
                    }
                  ],
                  "xg_override": 0.0257
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.5749,
                  "after": 0.4306
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4386,
                  "after": 0.3285
                },
                {
                  "stat": "aerialWon",
                  "before": 0.9206,
                  "after": 1.0
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1346,
                  "after": 0.1008
                },
                {
                  "stat": "goals",
                  "before": 0.052,
                  "after": 0.0389
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0343,
                  "after": 0.0257
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.7198,
                "expected_assists": 0.0625,
                "assist_rate": 0.0636,
                "assists": 0,
                "expected_goals": 0.0257,
                "goal_rate": 0.0389,
                "goals": 0,
                "shots_on_target": 0.1008,
                "total_shots": 0.4306,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 1.0,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.3285,
                "duel_xg_multiplier": 0.749,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.7198,
                "expected_assists": 0.0746,
                "assist_rate": 0.0636,
                "assists": 0,
                "expected_goals": 0.0286,
                "goal_rate": 0.0389,
                "goals": 0,
                "shots_on_target": 0.1008,
                "total_shots": 0.4306,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 1.0,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.3285,
                "duel_xg_multiplier": 0.749,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1744,
                "creation_factor": 1.0098
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0625,
                  "after": 0.0746
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 76.0)",
              "stats": {
                "key_pass": 0.7198,
                "expected_assists": 0.0746,
                "assist_rate": 0.0636,
                "assists": 0,
                "expected_goals": 0.0286,
                "goal_rate": 0.0389,
                "goals": 0,
                "shots_on_target": 0.1008,
                "total_shots": 0.4306,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 1.0,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.3285,
                "duel_xg_multiplier": 0.749,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1744,
                "creation_factor": 1.0098,
                "fifa_overall": 76.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": 3140,
                "fifa_rank": 1772.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": {
                "key_pass": 0.7198,
                "expected_assists": 0.0746,
                "assist_rate": 0.0636,
                "assists": 0,
                "expected_goals": 0.0286,
                "goal_rate": 0.0389,
                "goals": 0,
                "shots_on_target": 0.1008,
                "total_shots": 0.4306,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 1.0,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.3285,
                "duel_xg_multiplier": 0.749,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0282,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1744,
                "creation_factor": 1.0098,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0282,
                "goal_rate": 0.0389,
                "scorer_weight": 0.0336,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0275,
                "finishing_factor": 1.1744,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.7198,
                "expected_assists": 0.0746,
                "assist_rate": 0.0636,
                "assists": 0,
                "expected_goals": 0.0286,
                "goal_rate": 0.0389,
                "goals": 0,
                "shots_on_target": 0.1008,
                "total_shots": 0.4306,
                "rating": 6.8491,
                "minutes": 87.46,
                "total_pass": 43.9593,
                "accurate_pass": 36.9126,
                "duels_won": 3.3252,
                "total_long_balls": 5.7826,
                "accurate_long_balls": 2.7614,
                "total_own_half_passes": 21.1213,
                "accurate_own_half_passes": 19.4984,
                "total_opp_half_passes": 22.838,
                "accurate_opp_half_passes": 17.4143,
                "crosses_total": 2.4362,
                "crosses_accurate": 0.3911,
                "touches": 54.752,
                "possession_lost": 9.7941,
                "dispossessed": 0.0,
                "duels_lost": 2.6442,
                "aerial_won": 1.0,
                "aerial_lost": 0.8601,
                "interceptions": 0.4752,
                "tackles_won": 0.7387,
                "tackles": 1.8105,
                "clearances": 1.7698,
                "total_contest": 0.1587,
                "won_contest": 0.0,
                "challenges_lost": 0.6443,
                "fouls": 0.9458,
                "fouls_drawn": 0.6078,
                "blocks": 0.3122,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.98,
                "total_progression": 58.3942,
                "progressive_carries": 0.3171,
                "shots_off_target": 0.3285,
                "duel_xg_multiplier": 0.749,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.249,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0282,
                "projected_assists": 0,
                "assist_probability": 0.0719,
                "finishing_factor": 1.1744,
                "creation_factor": 1.0098,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0719,
                "assist_rate": 0.0636,
                "provider_weight": 0.0753,
                "squad_weight_total": 0.7398,
                "weight_share": 0.1018,
                "creation_factor": 1.0098,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Caleb Yirenkyi": {
          "player_id": 1986794,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 182,
          "market_value": 23000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.046,
            "assist_rate": 0.0532,
            "assists": 0,
            "expected_goals": 0.0382,
            "goal_rate": 0.0386,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7064,
            "minutes": 76,
            "total_pass": 23,
            "accurate_pass": 21,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 12,
            "accurate_own_half_passes": 11,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 11,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 35,
            "possession_lost": 5.6902,
            "dispossessed": 0.4436,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 9,
            "total_progression": 31,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.9055,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.356,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Sander Berge",
            "opponent_faced": "Sander Berge",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0375,
            "projected_assists": 0,
            "assist_probability": 0.045,
            "finishing_factor": 1.0498,
            "creation_factor": 1.1661,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 60,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0139,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 3,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 78,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0075,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 21,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 7,
                "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": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 89,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0092,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 17,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "key_pass": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 27,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 5,
                "interceptions": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 71,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0344,
                "expected_assists": 0.1292,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 37,
                "key_pass": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 62,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0045,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 10,
                "aerial_won": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 4068,
            "combined_rank_score": 2047.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 873.0,
            "sofascore_rating": 6.55,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3222.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7064,
            "source_file": "data/player_rankings.csv",
            "player_name": "Caleb Yirenkyi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Manuel Lanzini",
                  "ranking": 4063
                },
                {
                  "player_name": "Yerson Mosquera",
                  "ranking": 4064
                },
                {
                  "player_name": "Sebastián Driussi",
                  "ranking": 4065
                },
                {
                  "player_name": "Franco Cristaldo",
                  "ranking": 4066
                },
                {
                  "player_name": "Ondrej Duda",
                  "ranking": 4067
                }
              ],
              "lower": [
                {
                  "player_name": "Gabriel Ávalos",
                  "ranking": 4069
                },
                {
                  "player_name": "Cecilio Domínguez",
                  "ranking": 4070
                },
                {
                  "player_name": "Álvaro Montero",
                  "ranking": 4071
                },
                {
                  "player_name": "Iker Muñoz",
                  "ranking": 4072
                },
                {
                  "player_name": "Elvis Rexhbeçaj",
                  "ranking": 4073
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.703,
          "history_matches": 7,
          "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": 7,
            "data_confidence": 0.703,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0193,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 131.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.69,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1
            },
            "rationale": "XGBoost regressor (M_service) evaluated 7 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.10, 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.6037,
                "expected_assists": 0.0378,
                "assists": 0.0537,
                "assist_rate": 0.0537,
                "expected_goals": 0.0372,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.1411,
                "total_shots": 0.6005,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 22.7544,
                "accurate_pass": 21.0833,
                "duels_won": 3.8916,
                "total_long_balls": 1.2145,
                "accurate_long_balls": 0.8249,
                "total_own_half_passes": 11.3451,
                "accurate_own_half_passes": 10.7691,
                "total_opp_half_passes": 11.4094,
                "accurate_opp_half_passes": 10.3142,
                "crosses_total": 0.3604,
                "crosses_accurate": 0.1656,
                "touches": 33.9464,
                "possession_lost": 5.5825,
                "dispossessed": 0.4352,
                "duels_lost": 5.9307,
                "aerial_won": 1.0615,
                "aerial_lost": 1.3581,
                "interceptions": 1.0381,
                "tackles_won": 0.4584,
                "tackles": 1.4217,
                "clearances": 1.1156,
                "total_contest": 1.6376,
                "won_contest": 0.424,
                "challenges_lost": 0.6937,
                "fouls": 2.2301,
                "fouls_drawn": 0.9844,
                "blocks": 0.2292,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 8.8534,
                "total_progression": 30.3017,
                "progressive_carries": 0.8823,
                "shots_off_target": 0.4594
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.1356,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1152,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.2577,
                  "totalShots": 0.098,
                  "expectedGoals": 0.0034,
                  "expectedAssists": 0.0203,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6036874651908875,
                    "model_output": 0.6037,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1188
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1162
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0701
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.063
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0261
                        }
                      ],
                      "others": -0.1342,
                      "total": 0.6037,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124738
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.121811
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.081422
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.079295
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.034784
                        }
                      ],
                      "others_margin": -0.200619
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.037756938487291336,
                    "model_output": 0.0378,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0187
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0119
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0078
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0046
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0036
                        }
                      ],
                      "others": -0.0171,
                      "total": 0.0378,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.245937
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.195317
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.132398
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.075019
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.064024
                        }
                      ],
                      "others_margin": -0.373968
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.053683992475271225,
                    "model_output": 0.0537,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0117
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0095
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0052
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0106,
                      "total": 0.0537,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.144246
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.134097
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.094862
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.073922
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.050806
                        }
                      ],
                      "others_margin": -0.179167
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03723177686333656,
                    "model_output": 0.0372,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0346
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0135
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0071
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0057
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0024,
                      "total": 0.0372,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.459871
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.257963
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.167308
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.136176
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.117432
                        }
                      ],
                      "others_margin": -0.059274
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04293335974216461,
                    "model_output": 0.0429,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0219
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0133
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0099
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0057
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0052
                        }
                      ],
                      "others": -0.0108,
                      "total": 0.0429,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.248677
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.18801
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.168207
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.110083
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.10213
                        }
                      ],
                      "others_margin": -0.225814
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.1411484181880951,
                    "model_output": 0.1411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0874
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0517
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0246
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0225
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0184
                        }
                      ],
                      "others": -0.0253,
                      "total": 0.1411,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.31215
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.244095
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.141293
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129768
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.104897
                        }
                      ],
                      "others_margin": -0.164503
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6005092859268188,
                    "model_output": 0.6005,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2964
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1253
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0648
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0514
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0406
                        }
                      ],
                      "others": -0.0685,
                      "total": 0.6005,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.296437
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125292
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.064779
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.051438
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.04063
                        }
                      ],
                      "others_margin": -0.068395
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.706418991088867,
                    "model_output": 6.7064,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0421
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0329
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0303
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0206
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0103
                        }
                      ],
                      "others": -0.0547,
                      "total": 6.7064,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.042128
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.032903
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.030335
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.020561
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.010299
                        }
                      ],
                      "others_margin": -0.054531
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "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.0193, quality 0.660)",
              "stats": {
                "key_pass": 0.6153,
                "expected_assists": 0.0385,
                "assists": 0.0547,
                "assist_rate": 0.0547,
                "expected_goals": 0.038,
                "goals": 0.0438,
                "goal_rate": 0.0438,
                "shots_on_target": 0.1439,
                "total_shots": 0.6122,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3674,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.082,
                "aerial_lost": 1.3843,
                "interceptions": 1.0581,
                "tackles_won": 0.4672,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2731,
                "fouls_drawn": 1.0034,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.4683
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.0193,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0271)",
              "stats": {
                "key_pass": 0.6153,
                "expected_assists": 0.0385,
                "assists": 0.0532,
                "assist_rate": 0.0532,
                "expected_goals": 0.038,
                "goals": 0.0426,
                "goal_rate": 0.0426,
                "shots_on_target": 0.14,
                "total_shots": 0.6114,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.082,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.4683
              },
              "params": {
                "blend_weight": 0.0271,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8434,
                "prior_reliability": 0.1,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.0581,
                  "after": 1.0294
                },
                {
                  "stat": "fouls",
                  "before": 2.2731,
                  "after": 2.2572
                },
                {
                  "stat": "wonTackle",
                  "before": 0.4672,
                  "after": 0.4545
                },
                {
                  "stat": "totalCross",
                  "before": 0.3674,
                  "after": 0.3727
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6153,
                "expected_assists": 0.0385,
                "assists": 0.0532,
                "assist_rate": 0.0532,
                "expected_goals": 0.038,
                "goals": 0.0426,
                "goal_rate": 0.0426,
                "shots_on_target": 0.14,
                "total_shots": 0.6114,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.082,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.4683
              },
              "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.6153,
                "expected_assists": 0.0385,
                "assists": 0.0532,
                "assist_rate": 0.0532,
                "expected_goals": 0.0344,
                "goals": 0.0386,
                "goal_rate": 0.0386,
                "shots_on_target": 0.1268,
                "total_shots": 0.5536,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.1,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.424,
                "duel_xg_multiplier": 0.9055,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.356,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Sander Berge",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.356,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9055,
                  "skill_edge": -0.0123,
                  "height_edge": -0.052,
                  "attacker_skill": 0.6946,
                  "defender_skill": 0.7219,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Sander Berge",
                      "market_value": 26000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.7219
                    }
                  ],
                  "xg_override": 0.0344
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.6114,
                  "after": 0.5536
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4683,
                  "after": 0.424
                },
                {
                  "stat": "aerialWon",
                  "before": 1.082,
                  "after": 1.1
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.14,
                  "after": 0.1268
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.6153,
                "expected_assists": 0.0385,
                "assist_rate": 0.0532,
                "assists": 0,
                "expected_goals": 0.0344,
                "goal_rate": 0.0386,
                "goals": 0,
                "shots_on_target": 0.1268,
                "total_shots": 0.5536,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.1,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.424,
                "duel_xg_multiplier": 0.9055,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.356,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.6153,
                "expected_assists": 0.046,
                "assist_rate": 0.0532,
                "assists": 0,
                "expected_goals": 0.0382,
                "goal_rate": 0.0386,
                "goals": 0,
                "shots_on_target": 0.1268,
                "total_shots": 0.5536,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.1,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.424,
                "duel_xg_multiplier": 0.9055,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.356,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0498,
                "creation_factor": 1.1661
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0385,
                  "after": 0.046
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.6153,
                "expected_assists": 0.046,
                "assist_rate": 0.0532,
                "assists": 0,
                "expected_goals": 0.0382,
                "goal_rate": 0.0386,
                "goals": 0,
                "shots_on_target": 0.1268,
                "total_shots": 0.5536,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.1,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.424,
                "duel_xg_multiplier": 0.9055,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.356,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0498,
                "creation_factor": 1.1661,
                "fifa_overall": 73.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": 4068,
                "fifa_rank": 3222.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.6153,
                "expected_assists": 0.046,
                "assist_rate": 0.0532,
                "assists": 0,
                "expected_goals": 0.0382,
                "goal_rate": 0.0386,
                "goals": 0,
                "shots_on_target": 0.1268,
                "total_shots": 0.5536,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.1,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.424,
                "duel_xg_multiplier": 0.9055,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.356,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0375,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0498,
                "creation_factor": 1.1661,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0375,
                "goal_rate": 0.0386,
                "scorer_weight": 0.0401,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0329,
                "finishing_factor": 1.0498,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.6153,
                "expected_assists": 0.046,
                "assist_rate": 0.0532,
                "assists": 0,
                "expected_goals": 0.0382,
                "goal_rate": 0.0386,
                "goals": 0,
                "shots_on_target": 0.1268,
                "total_shots": 0.5536,
                "rating": 6.7064,
                "minutes": 75.91,
                "total_pass": 23.1936,
                "accurate_pass": 21.4902,
                "duels_won": 3.9667,
                "total_long_balls": 1.2379,
                "accurate_long_balls": 0.8408,
                "total_own_half_passes": 11.5641,
                "accurate_own_half_passes": 10.9769,
                "total_opp_half_passes": 11.6296,
                "accurate_opp_half_passes": 10.5133,
                "crosses_total": 0.3727,
                "crosses_accurate": 0.1688,
                "touches": 34.6016,
                "possession_lost": 5.6902,
                "dispossessed": 0.4436,
                "duels_lost": 6.0452,
                "aerial_won": 1.1,
                "aerial_lost": 1.3843,
                "interceptions": 1.0294,
                "tackles_won": 0.4545,
                "tackles": 1.4491,
                "clearances": 1.1371,
                "total_contest": 1.6692,
                "won_contest": 0.4322,
                "challenges_lost": 0.7071,
                "fouls": 2.2572,
                "fouls_drawn": 1.0067,
                "blocks": 0.2336,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.0243,
                "total_progression": 30.8865,
                "progressive_carries": 0.8993,
                "shots_off_target": 0.424,
                "duel_xg_multiplier": 0.9055,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.356,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sander Berge",
                "opponent_faced": "Sander Berge",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0375,
                "projected_assists": 0,
                "assist_probability": 0.045,
                "finishing_factor": 1.0498,
                "creation_factor": 1.1661,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.045,
                "assist_rate": 0.0532,
                "provider_weight": 0.0536,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0725,
                "creation_factor": 1.1661,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jay DaSilva": {
          "player_id": 791985,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 170,
          "market_value": 11600000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.6314,
            "minutes": 90,
            "total_pass": 28,
            "accurate_pass": 24,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 10,
            "accurate_own_half_passes": 9,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 15,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 42,
            "possession_lost": 8.0269,
            "dispossessed": 0.4231,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.1544,
            "goals": 0,
            "assist_rate": 0.1817,
            "assists": 0,
            "expected_goals": 0.0769,
            "expected_assists": 0.0986,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0658,
            "ball_carries": 9,
            "total_progression": 32,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "opponent_faced": "Gonzalo García",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.074,
            "projected_assists": 0,
            "assist_probability": 0.0939,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0483,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0185,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 3,
                "tackles_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": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3194,
                "expected_assists": 0.0407,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3349,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 15,
                "key_pass": 2,
                "clearances": 2,
                "aerial_won": 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": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 85,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1831,
                "expected_assists": 0.0455,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 69,
                "accurate_pass": 61,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0232,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 22,
                "clearances": 5,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3727,
            "combined_rank_score": 1711.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 5.0,
            "fifa_rank": 3265.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6314,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jay DaSilva",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Darius Olaru",
                  "ranking": 3722
                },
                {
                  "player_name": "Jairo Concha",
                  "ranking": 3723
                },
                {
                  "player_name": "Facundo Bernal",
                  "ranking": 3724
                },
                {
                  "player_name": "Roberto Fernández",
                  "ranking": 3725
                },
                {
                  "player_name": "Veljko Birmančević",
                  "ranking": 3726
                }
              ],
              "lower": [
                {
                  "player_name": "Oskar Pietuszewski",
                  "ranking": 3728
                },
                {
                  "player_name": "Honest Ahanor",
                  "ranking": 3729
                },
                {
                  "player_name": "Alexandru Mitriță",
                  "ranking": 3730
                },
                {
                  "player_name": "Fabio Carvalho",
                  "ranking": 3731
                },
                {
                  "player_name": "Facundo Buonanotte",
                  "ranking": 3732
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.707,
          "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.707,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0045,
            "fbref_prior_metrics": {
              "squad": "Coventry 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.5,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 7 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Coventry 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.7775,
                "tackles": 1.6766,
                "tackles_won": 1.099,
                "clearances": 2.1425,
                "aerial_won": 0.6967,
                "total_shots": 0.4709,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 27.9471,
                "accurate_pass": 23.601,
                "duels_won": 2.9394,
                "total_long_balls": 1.5738,
                "accurate_long_balls": 0.867,
                "total_own_half_passes": 10.2978,
                "accurate_own_half_passes": 8.8163,
                "total_opp_half_passes": 17.6493,
                "accurate_opp_half_passes": 14.7847,
                "crosses_total": 2.7399,
                "crosses_accurate": 0.8188,
                "touches": 41.6583,
                "possession_lost": 7.9909,
                "dispossessed": 0.4212,
                "duels_lost": 3.3313,
                "aerial_lost": 1.0684,
                "total_contest": 1.1375,
                "won_contest": 0.8557,
                "ball_recovery": 2.143,
                "challenges_lost": 0.8608,
                "fouls": 0.699,
                "fouls_drawn": 0.0,
                "blocks": 0.6089,
                "goals": 0.1595,
                "goal_rate": 0.1595,
                "assists": 0.1877,
                "assist_rate": 0.1877,
                "expected_goals": 0.0689,
                "expected_assists": 0.0822,
                "shots_on_target": 0.2575,
                "big_chances_created": 0.1356,
                "xgot": 0.0589,
                "ball_carries": 9.3107,
                "total_progression": 32.2613,
                "progressive_carries": 0.6768,
                "key_pass": 0.9544,
                "shots_off_target": 0.2134
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 6.0
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.7398,
                  "aerialWon": 0.6528,
                  "totalClearance_p90": 1.7534,
                  "totalTackle": 1.4309,
                  "defensive_actions": 2.1839
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7774978280067444,
                    "model_output": 0.7775,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1117
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0387
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0355
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0256
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0216
                        }
                      ],
                      "others": -0.0731,
                      "total": 0.7775,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122047
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.040618
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.038835
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.028966
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.025069
                        }
                      ],
                      "others_margin": -0.089789
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.676627516746521,
                    "model_output": 1.6766,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1762
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.063
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.054
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0518
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0465
                        }
                      ],
                      "others": -0.005,
                      "total": 1.6766,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.11992
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.039605
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.032731
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.030431
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.027267
                        }
                      ],
                      "others_margin": -0.002935
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0989803075790405,
                    "model_output": 1.099,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1028
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0321
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0288
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.027
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0273
                        }
                      ],
                      "others": 0.1002,
                      "total": 1.099,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114857
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.034445
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.030967
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.028169
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.027756
                        }
                      ],
                      "others_margin": 0.09548
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.1425108909606934,
                    "model_output": 2.1425,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.7804
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3507
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2867
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.2402
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2177
                        }
                      ],
                      "others": -0.1083,
                      "total": 2.1425,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.258581
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124507
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.100607
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.092859
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.092306
                        }
                      ],
                      "others_margin": -0.049298
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6967167258262634,
                    "model_output": 0.6967,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4376
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1374
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1011
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0845
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0402
                        }
                      ],
                      "others": -0.0899,
                      "total": 0.6967,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.379644
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.156712
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117609
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.097279
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.049886
                        }
                      ],
                      "others_margin": -0.12128
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4708714783191681,
                    "model_output": 0.4709,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0635
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0283
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.0189
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.0308,
                      "total": 0.4709,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.063531
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.028316
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.018898
                        },
                        {
                          "name": "rating",
                          "margin": -0.01713
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.010233
                        }
                      ],
                      "others_margin": -0.030819
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6313629150390625,
                    "model_output": 6.6314,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": -0.0443
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0162
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.016
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0128
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0118
                        }
                      ],
                      "others": -0.0579,
                      "total": 6.6314,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": -0.044319
                        },
                        {
                          "name": "rating",
                          "margin": -0.016219
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016041
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.012783
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.011836
                        }
                      ],
                      "others_margin": -0.057822
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0045, quality 0.541)",
              "stats": {
                "interceptions": 0.781,
                "tackles": 1.6842,
                "tackles_won": 1.1039,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4731,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7522,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.7021,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goals": 0.1602,
                "goal_rate": 0.1602,
                "assists": 0.1885,
                "assist_rate": 0.1885,
                "expected_goals": 0.0692,
                "expected_assists": 0.0826,
                "shots_on_target": 0.2587,
                "big_chances_created": 0.1362,
                "xgot": 0.0592,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144
              },
              "params": {
                "market_value_eur": 11600000,
                "quality_factor": 0.5411,
                "boost_factor": 1.0045,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0361)",
              "stats": {
                "interceptions": 0.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.474,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goals": 0.1544,
                "goal_rate": 0.1544,
                "assists": 0.1817,
                "assist_rate": 0.1817,
                "expected_goals": 0.0692,
                "expected_assists": 0.0826,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0592,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144
              },
              "params": {
                "blend_weight": 0.0361,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.995,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 0.781,
                  "after": 0.7708
                },
                {
                  "stat": "totalCross",
                  "before": 2.7522,
                  "after": 2.7426
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2587,
                  "after": 0.2673
                },
                {
                  "stat": "fouls",
                  "before": 0.7021,
                  "after": 0.6947
                },
                {
                  "stat": "goalAssist",
                  "before": 0.1885,
                  "after": 0.1817
                },
                {
                  "stat": "goals",
                  "before": 0.1602,
                  "after": 0.1544
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4817,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goals": 0.1544,
                "goal_rate": 0.1544,
                "assists": 0.1817,
                "assist_rate": 0.1817,
                "expected_goals": 0.0692,
                "expected_assists": 0.0826,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0592,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144
              },
              "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.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4817,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goals": 0.1544,
                "goal_rate": 0.1544,
                "assists": 0.1817,
                "assist_rate": 0.1817,
                "expected_goals": 0.0692,
                "expected_assists": 0.0826,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0592,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144,
                "opponent_faced": "Gonzalo García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Gonzalo García",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4817,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goal_rate": 0.1544,
                "goals": 0,
                "assist_rate": 0.1817,
                "assists": 0,
                "expected_goals": 0.0692,
                "expected_assists": 0.0826,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0592,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144,
                "opponent_faced": "Gonzalo García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4817,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goal_rate": 0.1544,
                "goals": 0,
                "assist_rate": 0.1817,
                "assists": 0,
                "expected_goals": 0.0769,
                "expected_assists": 0.0986,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0658,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144,
                "opponent_faced": "Gonzalo García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0692,
                  "after": 0.0769
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0826,
                  "after": 0.0986
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 73.0)",
              "stats": {
                "interceptions": 0.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4817,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goal_rate": 0.1544,
                "goals": 0,
                "assist_rate": 0.1817,
                "assists": 0,
                "expected_goals": 0.0769,
                "expected_assists": 0.0986,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0658,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144,
                "opponent_faced": "Gonzalo García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 73.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": 3727,
                "fifa_rank": 3265.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": {
                "interceptions": 0.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4817,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goal_rate": 0.1544,
                "goals": 0,
                "assist_rate": 0.1817,
                "assists": 0,
                "expected_goals": 0.0769,
                "expected_assists": 0.0986,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0658,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144,
                "opponent_faced": "Gonzalo García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.074,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.074,
                "goal_rate": 0.1544,
                "scorer_weight": 0.0961,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0788,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.7708,
                "tackles": 1.6842,
                "tackles_won": 1.1,
                "clearances": 2.1522,
                "aerial_won": 0.6999,
                "total_shots": 0.4817,
                "rating": 6.6314,
                "minutes": 89.55,
                "total_pass": 28.0729,
                "accurate_pass": 23.7072,
                "duels_won": 2.9526,
                "total_long_balls": 1.5809,
                "accurate_long_balls": 0.8709,
                "total_own_half_passes": 10.3441,
                "accurate_own_half_passes": 8.856,
                "total_opp_half_passes": 17.7287,
                "accurate_opp_half_passes": 14.8512,
                "crosses_total": 2.7426,
                "crosses_accurate": 0.8225,
                "touches": 41.8458,
                "possession_lost": 8.0269,
                "dispossessed": 0.4231,
                "duels_lost": 3.3463,
                "aerial_lost": 1.0732,
                "total_contest": 1.1426,
                "won_contest": 0.8596,
                "ball_recovery": 2.1526,
                "challenges_lost": 0.8647,
                "fouls": 0.6947,
                "fouls_drawn": 0.0,
                "blocks": 0.6116,
                "goal_rate": 0.1544,
                "goals": 0,
                "assist_rate": 0.1817,
                "assists": 0,
                "expected_goals": 0.0769,
                "expected_assists": 0.0986,
                "shots_on_target": 0.2673,
                "big_chances_created": 0.1362,
                "xgot": 0.0658,
                "ball_carries": 9.3526,
                "total_progression": 32.4065,
                "progressive_carries": 0.6798,
                "key_pass": 0.9587,
                "shots_off_target": 0.2144,
                "opponent_faced": "Gonzalo García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.074,
                "projected_assists": 0,
                "assist_probability": 0.0939,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0939,
                "assist_rate": 0.1817,
                "provider_weight": 0.1232,
                "squad_weight_total": 0.7398,
                "weight_share": 0.1666,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ethan Pinnock": {
          "player_id": 855864,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 194,
          "market_value": 2800000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 3,
            "total_shots": 0,
            "rating": 6.7443,
            "minutes": 88,
            "total_pass": 25,
            "accurate_pass": 20,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 40,
            "possession_lost": 6.1943,
            "dispossessed": 0.0622,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0192,
            "expected_assists": 0.019,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0116,
            "ball_carries": 5,
            "total_progression": 12,
            "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.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.749,
            "opponent_faced": "Gonzalo García",
            "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.019,
            "projected_assists": 0,
            "assist_probability": 0.0188,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0187,
                "expected_assists": 0.0562,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 29,
                "clearances": 5,
                "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"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0022,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 12,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.005,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 17,
                "interceptions": 2,
                "clearances": 12,
                "aerial_won": 6,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0147,
                "expected_assists": 0.0026,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 15,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 7,
                "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": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1085,
                "expected_assists": 0.0001,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 9,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 9,
                "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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 12,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14024018,
              "match_date": "2026-03-21",
              "home_team": "Leeds United",
              "away_team": "Brentford",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brentford",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0106,
                "expected_assists": 0.0017,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 33,
                "accurate_pass": 29,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 11,
                "aerial_won": 7,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025126,
              "match_date": "2025-12-03",
              "home_team": "Arsenal",
              "away_team": "Brentford",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brentford",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 74,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0196,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 30,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025163,
              "match_date": "2025-09-20",
              "home_team": "Fulham",
              "away_team": "Brentford",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Brentford",
              "opponent": "Fulham",
              "stats": {
                "minutes": 74,
                "rating": 5.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 28,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025127,
              "match_date": "2025-09-13",
              "home_team": "Brentford",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Brentford",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 83,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0379,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 23,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3408,
            "combined_rank_score": 1388.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.8,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2199.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7443,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ethan Pinnock",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Stefan Savić",
                  "ranking": 3403
                },
                {
                  "player_name": "Nicolae Stanciu",
                  "ranking": 3404
                },
                {
                  "player_name": "Philip Billing",
                  "ranking": 3405
                },
                {
                  "player_name": "Anis Hadj Moussa",
                  "ranking": 3406
                },
                {
                  "player_name": "Jordy Clasie",
                  "ranking": 3407
                }
              ],
              "lower": [
                {
                  "player_name": "Alassane Pléa",
                  "ranking": 3409
                },
                {
                  "player_name": "Caio Henrique",
                  "ranking": 3410
                },
                {
                  "player_name": "William Osula",
                  "ranking": 3411
                },
                {
                  "player_name": "Justin De Haas",
                  "ranking": 3412
                },
                {
                  "player_name": "Nahuel Losada",
                  "ranking": 3413
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 10,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 10,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9932,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 10 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.8237,
                "tackles": 1.1554,
                "tackles_won": 0.6519,
                "clearances": 5.9911,
                "aerial_won": 2.8752,
                "total_shots": 0.5001,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.3159,
                "accurate_pass": 20.462,
                "duels_won": 4.0114,
                "total_long_balls": 3.8542,
                "accurate_long_balls": 1.9064,
                "total_own_half_passes": 14.9889,
                "accurate_own_half_passes": 13.5637,
                "total_opp_half_passes": 10.327,
                "accurate_opp_half_passes": 6.8983,
                "crosses_total": 0.1199,
                "crosses_accurate": 0.0,
                "touches": 40.3748,
                "possession_lost": 6.2367,
                "dispossessed": 0.0626,
                "duels_lost": 3.0813,
                "aerial_lost": 2.1856,
                "total_contest": 0.1755,
                "won_contest": 0.0736,
                "ball_recovery": 1.9401,
                "challenges_lost": 0.6293,
                "fouls": 0.1019,
                "fouls_drawn": 0.311,
                "blocks": 2.013,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0174,
                "expected_assists": 0.016,
                "shots_on_target": 0.0866,
                "big_chances_created": 0.0,
                "xgot": 0.0105,
                "ball_carries": 5.5204,
                "total_progression": 12.1678,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4135
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1868,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1588,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1349,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1147,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0975,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0704,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2025-12-03",
                    "opponent": "Arsenal",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0599,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2025-09-20",
                    "opponent": "Fulham",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0509,
                    "rating": 5.4
                  },
                  {
                    "match_date": "2025-09-13",
                    "opponent": "Chelsea",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0433,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.5226,
                  "aerialWon": 2.7326,
                  "totalClearance_p90": 7.7714,
                  "totalTackle": 0.77,
                  "defensive_actions": 1.5116
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8237189054489136,
                    "model_output": 0.8237,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1078
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0392
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0296
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0223
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0208
                        }
                      ],
                      "others": -0.0325,
                      "total": 0.8237,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118092
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.041373
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.032437
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.025084
                        },
                        {
                          "name": "touches",
                          "margin": -0.023981
                        }
                      ],
                      "others_margin": -0.038698
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.155432105064392,
                    "model_output": 1.1554,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1818
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.115
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0854
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0521
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0498
                        }
                      ],
                      "others": -0.1072,
                      "total": 1.1554,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12352
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.076301
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.06073
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.038967
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.038669
                        }
                      ],
                      "others_margin": -0.088678
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6518759727478027,
                    "model_output": 0.6519,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1032
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0769
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0686
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0337
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0299
                        }
                      ],
                      "others": -0.0872,
                      "total": 0.6519,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.11521
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.08458
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.08195
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.042894
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.039681
                        }
                      ],
                      "others_margin": -0.125604
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.99113130569458,
                    "model_output": 5.9911,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.8237
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5737
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.4214
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2176
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1827
                        }
                      ],
                      "others": 0.3469,
                      "total": 5.9911,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.21551
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126664
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.083764
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.040649
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.032906
                        }
                      ],
                      "others_margin": 0.059664
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.8752245903015137,
                    "model_output": 2.8752,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.5441
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2424
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2209
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2286
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.2017
                        }
                      ],
                      "others": 0.0523,
                      "total": 2.8752,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.331321
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118352
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.096893
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.091236
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.074126
                        }
                      ],
                      "others_margin": 0.018386
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5000573992729187,
                    "model_output": 0.5001,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0575
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0182
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0163
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0123
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0115
                        }
                      ],
                      "others": -0.035,
                      "total": 0.5001,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.057511
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.018162
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.016308
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.012304
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.011527
                        }
                      ],
                      "others_margin": -0.035025
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7442851066589355,
                    "model_output": 6.7443,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0447
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0253
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0157
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.014
                        },
                        {
                          "name": "touches",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0154,
                      "total": 6.7443,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.0447
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.025295
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.015656
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014008
                        },
                        {
                          "name": "touches",
                          "margin": -0.01299
                        }
                      ],
                      "others_margin": -0.015352
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 10,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9932, quality 0.437)",
              "stats": {
                "interceptions": 0.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0173,
                "expected_assists": 0.0159,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0104,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107
              },
              "params": {
                "market_value_eur": 2800000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9932,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0173,
                "expected_assists": 0.0159,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0104,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107
              },
              "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.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0173,
                "expected_assists": 0.0159,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0104,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "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": "Gonzalo García",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0173,
                "expected_assists": 0.0159,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0104,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "interceptions": 0.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0192,
                "expected_assists": 0.019,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0116,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 75.0)",
              "stats": {
                "interceptions": 0.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0192,
                "expected_assists": 0.019,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0116,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 75.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": 3408,
                "fifa_rank": 2199.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0192,
                "expected_assists": 0.019,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0116,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "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.019,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.019,
                "goal_rate": 0.0,
                "scorer_weight": 0.0154,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0126,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.8181,
                "tackles": 1.1476,
                "tackles_won": 0.6474,
                "clearances": 5.9504,
                "aerial_won": 2.8557,
                "total_shots": 0.4967,
                "rating": 6.7443,
                "minutes": 87.91,
                "total_pass": 25.1438,
                "accurate_pass": 20.3229,
                "duels_won": 3.9841,
                "total_long_balls": 3.828,
                "accurate_long_balls": 1.8934,
                "total_own_half_passes": 14.887,
                "accurate_own_half_passes": 13.4715,
                "total_opp_half_passes": 10.2568,
                "accurate_opp_half_passes": 6.8514,
                "crosses_total": 0.1191,
                "crosses_accurate": 0.0,
                "touches": 40.1003,
                "possession_lost": 6.1943,
                "dispossessed": 0.0622,
                "duels_lost": 3.0603,
                "aerial_lost": 2.1707,
                "total_contest": 0.1743,
                "won_contest": 0.0731,
                "ball_recovery": 1.9269,
                "challenges_lost": 0.625,
                "fouls": 0.1012,
                "fouls_drawn": 0.3089,
                "blocks": 1.9993,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0192,
                "expected_assists": 0.019,
                "shots_on_target": 0.086,
                "big_chances_created": 0.0,
                "xgot": 0.0116,
                "ball_carries": 5.4829,
                "total_progression": 12.0851,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.4107,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "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.019,
                "projected_assists": 0,
                "assist_probability": 0.0188,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0188,
                "assist_rate": 0.0,
                "provider_weight": 0.0152,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0205,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Bobby Thomas": {
          "player_id": 1033352,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 186,
          "market_value": 21000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 7,
            "aerial_won": 4,
            "total_shots": 1,
            "rating": 6.9857,
            "minutes": 89,
            "total_pass": 33,
            "accurate_pass": 26,
            "duels_won": 5,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 17,
            "total_opp_half_passes": 15,
            "accurate_opp_half_passes": 9,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 50,
            "possession_lost": 7.6318,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0881,
            "expected_assists": 0.0621,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 20,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 1,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.749,
            "opponent_faced": "Gonzalo García",
            "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.0843,
            "projected_assists": 0,
            "assist_probability": 0.0602,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0731,
                "expected_assists": 0.0626,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 26,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 7,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 16,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0556,
                "expected_assists": 0.0378,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 29,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 8,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 5.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1925,
                "expected_assists": 0.0661,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 26,
                "accurate_pass": 18,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 6,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2204,
                "expected_assists": 0.1671,
                "total_shots": 5,
                "shots_off_target": 3,
                "total_pass": 21,
                "accurate_pass": 11,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 4,
                "clearances": 6,
                "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": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 78,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0056,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 49,
                "clearances": 9,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0183,
                "expected_assists": 0.0136,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 35,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 7,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3465,
            "combined_rank_score": 1457.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 229.0,
            "sofascore_rating": 7.15,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2685.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9857,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bobby Thomas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Eric Dier",
                  "ranking": 3460
                },
                {
                  "player_name": "Benjamin Nygren",
                  "ranking": 3461
                },
                {
                  "player_name": "Arnau Tenas",
                  "ranking": 3462
                },
                {
                  "player_name": "Yvon Mvogo",
                  "ranking": 3463
                },
                {
                  "player_name": "Duje Ćaleta-Car",
                  "ranking": 3464
                }
              ],
              "lower": [
                {
                  "player_name": "Clinton Mata",
                  "ranking": 3466
                },
                {
                  "player_name": "Emerson Palmieri",
                  "ranking": 3467
                },
                {
                  "player_name": "Jakub Moder",
                  "ranking": 3468
                },
                {
                  "player_name": "Nabil Bentaleb",
                  "ranking": 3469
                },
                {
                  "player_name": "Ludovic Ajorque",
                  "ranking": 3470
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.707,
          "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.707,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.017,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 167.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.54,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (D_service) evaluated 7 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Coventry 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.174,
                "tackles": 1.2999,
                "tackles_won": 0.6847,
                "clearances": 6.6712,
                "aerial_won": 3.9712,
                "total_shots": 0.8156,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.437,
                "accurate_pass": 25.354,
                "duels_won": 5.3012,
                "total_long_balls": 4.97,
                "accurate_long_balls": 1.8276,
                "total_own_half_passes": 17.509,
                "accurate_own_half_passes": 16.6716,
                "total_opp_half_passes": 14.928,
                "accurate_opp_half_passes": 8.6825,
                "crosses_total": 0.098,
                "crosses_accurate": 0.0,
                "touches": 49.6486,
                "possession_lost": 7.5042,
                "dispossessed": 0.0,
                "duels_lost": 3.5919,
                "aerial_lost": 2.0668,
                "total_contest": 0.098,
                "won_contest": 0.098,
                "ball_recovery": 2.8211,
                "challenges_lost": 0.8427,
                "fouls": 0.7804,
                "fouls_drawn": 0.9231,
                "blocks": 1.2994,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.078,
                "expected_assists": 0.0511,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1152,
                "xgot": 0.0,
                "ball_carries": 10.0706,
                "total_progression": 19.4933,
                "progressive_carries": 0.098,
                "key_pass": 0.3138,
                "shots_off_target": 0.8156
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 5.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 8.7935,
                  "aerialWon": 3.5137,
                  "totalClearance_p90": 8.9292,
                  "totalTackle": 0.7665,
                  "defensive_actions": 2.4989
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.174032211303711,
                    "model_output": 1.174,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1118
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.083
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0418
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0287
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0283
                        }
                      ],
                      "others": 0.0201,
                      "total": 1.174,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12213
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.08196
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.038858
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.025864
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.024872
                        }
                      ],
                      "others_margin": 0.017206
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2998778820037842,
                    "model_output": 1.2999,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1391
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1313
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0973
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0529
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0248
                        }
                      ],
                      "others": -0.0218,
                      "total": 1.2999,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.095823
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.090224
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.072527
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.040101
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.018559
                        }
                      ],
                      "others_margin": -0.016644
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6846796274185181,
                    "model_output": 0.6847,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0855
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0616
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0595
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0433
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0286
                        }
                      ],
                      "others": -0.0874,
                      "total": 0.6847,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.10662
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.084586
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.081765
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.055559
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.036317
                        }
                      ],
                      "others_margin": -0.120204
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.671249866485596,
                    "model_output": 6.6712,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.9728
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5618
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.4351
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.3938
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2469
                        }
                      ],
                      "others": 0.6357,
                      "total": 6.6712,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.250007
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.120225
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.084087
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.070448
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.041768
                        }
                      ],
                      "others_margin": 0.10015
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 3.9711523056030273,
                    "model_output": 3.9712,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.9097
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.342
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3213
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3012
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.265
                        }
                      ],
                      "others": 0.4467,
                      "total": 3.9711,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.504847
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.138932
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114982
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.096953
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.078178
                        }
                      ],
                      "others_margin": 0.119347
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8155997395515442,
                    "model_output": 0.8156,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.2786
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0509
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0418
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0371
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0289
                        }
                      ],
                      "others": 0.0448,
                      "total": 0.8156,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.278627
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.050875
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.041804
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.037099
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.02888
                        }
                      ],
                      "others_margin": 0.044743
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.985676288604736,
                    "model_output": 6.9857,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0453
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0372
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0361
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0144
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0135
                        }
                      ],
                      "others": 0.0488,
                      "total": 6.9857,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.045279
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.037191
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.036097
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.014432
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.013539
                        }
                      ],
                      "others_margin": 0.048755
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0170, quality 0.641)",
              "stats": {
                "interceptions": 1.194,
                "tackles": 1.322,
                "tackles_won": 0.6963,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.0997,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.7937,
                "fouls_drawn": 0.9388,
                "blocks": 1.3215,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0793,
                "expected_assists": 0.052,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.017,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0343)",
              "stats": {
                "interceptions": 1.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8194,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0793,
                "expected_assists": 0.052,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295
              },
              "params": {
                "blend_weight": 0.0343,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9899,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.194,
                  "after": 1.153
                },
                {
                  "stat": "wasFouled",
                  "before": 0.9388,
                  "after": 0.9781
                },
                {
                  "stat": "fouls",
                  "before": 0.7937,
                  "after": 0.8201
                },
                {
                  "stat": "totalCross",
                  "before": 0.0997,
                  "after": 0.1142
                },
                {
                  "stat": "totalShots",
                  "before": 0.8295,
                  "after": 0.8194
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6963,
                  "after": 0.6903
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0793,
                "expected_assists": 0.052,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295
              },
              "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.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0793,
                "expected_assists": 0.052,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "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": "Gonzalo García",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0793,
                "expected_assists": 0.052,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0881,
                "expected_assists": 0.0621,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0793,
                  "after": 0.0881
                },
                {
                  "stat": "expected_assists",
                  "before": 0.052,
                  "after": 0.0621
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 74.0)",
              "stats": {
                "interceptions": 1.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0881,
                "expected_assists": 0.0621,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 74.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": 3465,
                "fifa_rank": 2685.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0881,
                "expected_assists": 0.0621,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "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.0843,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0843,
                "goal_rate": 0.0,
                "scorer_weight": 0.0705,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0578,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.153,
                "tackles": 1.322,
                "tackles_won": 0.6903,
                "clearances": 6.7847,
                "aerial_won": 4.0387,
                "total_shots": 0.8295,
                "rating": 6.9857,
                "minutes": 89.09,
                "total_pass": 32.9884,
                "accurate_pass": 25.785,
                "duels_won": 5.3913,
                "total_long_balls": 5.0545,
                "accurate_long_balls": 1.8587,
                "total_own_half_passes": 17.8067,
                "accurate_own_half_passes": 16.955,
                "total_opp_half_passes": 15.1818,
                "accurate_opp_half_passes": 8.8301,
                "crosses_total": 0.1142,
                "crosses_accurate": 0.0,
                "touches": 50.4926,
                "possession_lost": 7.6318,
                "dispossessed": 0.0,
                "duels_lost": 3.653,
                "aerial_lost": 2.1019,
                "total_contest": 0.0997,
                "won_contest": 0.0997,
                "ball_recovery": 2.8691,
                "challenges_lost": 0.857,
                "fouls": 0.8201,
                "fouls_drawn": 0.9781,
                "blocks": 1.3215,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0881,
                "expected_assists": 0.0621,
                "shots_on_target": 0.0,
                "big_chances_created": 0.1172,
                "xgot": 0.0,
                "ball_carries": 10.2418,
                "total_progression": 19.8247,
                "progressive_carries": 0.0997,
                "key_pass": 0.3191,
                "shots_off_target": 0.8295,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.749,
                "opponent_faced": "Gonzalo García",
                "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.0843,
                "projected_assists": 0,
                "assist_probability": 0.0602,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0602,
                "assist_rate": 0.0,
                "provider_weight": 0.0497,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0672,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Milan van Ewijk": {
          "player_id": 948723,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 27,
          "height": 175,
          "market_value": 23000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7472,
            "minutes": 90,
            "total_pass": 27,
            "accurate_pass": 23,
            "duels_won": 4,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 11,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 51,
            "possession_lost": 11.2156,
            "dispossessed": 0.4152,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0856,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 9,
            "total_progression": 48,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 2.1,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.532,
            "opponent_faced": "Alex Iwobi",
            "pressing_zone": "Left Wing vs Right Back — Flank Battle",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.082,
            "finishing_factor": 1.0,
            "creation_factor": 0.8,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1115,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 26,
                "key_pass": 3,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0092,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 11,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 8,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0446,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0631,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 19,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1874,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 46,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 5.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 14,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3641,
            "combined_rank_score": 1606.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 1001.0,
            "sofascore_rating": 6.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2211.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7472,
            "source_file": "data/player_rankings.csv",
            "player_name": "Milan van Ewijk",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                },
                {
                  "player_name": "Rodrigo Mora",
                  "ranking": 3640
                }
              ],
              "lower": [
                {
                  "player_name": "William Gomes",
                  "ranking": 3642
                },
                {
                  "player_name": "Miguel Román",
                  "ranking": 3643
                },
                {
                  "player_name": "João Moutinho",
                  "ranking": 3644
                },
                {
                  "player_name": "Tom Cairney",
                  "ranking": 3645
                },
                {
                  "player_name": "Mads Hermansen",
                  "ranking": 3646
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.645,
          "history_matches": 6,
          "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": 6,
            "data_confidence": 0.645,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0211,
            "fbref_prior_metrics": {
              "squad": "Coventry 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 6 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Coventry 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.1312,
                "tackles": 2.0631,
                "tackles_won": 1.3119,
                "clearances": 3.3887,
                "aerial_won": 1.292,
                "total_shots": 0.3723,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 26.4866,
                "accurate_pass": 22.0821,
                "duels_won": 4.2798,
                "total_long_balls": 4.5711,
                "accurate_long_balls": 2.5471,
                "total_own_half_passes": 13.0766,
                "accurate_own_half_passes": 11.5054,
                "total_opp_half_passes": 13.41,
                "accurate_opp_half_passes": 10.5768,
                "crosses_total": 0.9706,
                "crosses_accurate": 0.6402,
                "touches": 49.4742,
                "possession_lost": 10.9838,
                "dispossessed": 0.4066,
                "duels_lost": 3.4169,
                "aerial_lost": 0.2809,
                "total_contest": 1.4786,
                "won_contest": 0.174,
                "ball_recovery": 2.7385,
                "challenges_lost": 0.7106,
                "fouls": 0.7142,
                "fouls_drawn": 0.7935,
                "blocks": 0.5924,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0702,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.2232,
                "total_progression": 47.401,
                "progressive_carries": 0.9796,
                "key_pass": 1.3526,
                "shots_off_target": 0.3723
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2408,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2047,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1257,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 5.4
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.0272,
                  "aerialWon": 1.3302,
                  "totalClearance_p90": 4.0272,
                  "totalTackle": 1.9822,
                  "defensive_actions": 3.5355
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1311806440353394,
                    "model_output": 1.1312,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1158
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0874
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0284
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0217
                        },
                        {
                          "name": "errorLeadToAGoal",
                          "contribution": -0.0171
                        }
                      ],
                      "others": 0.0347,
                      "total": 1.1312,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.1263
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.08572
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.026366
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.019635
                        },
                        {
                          "name": "errorLeadToAGoal",
                          "margin": -0.015501
                        }
                      ],
                      "others_margin": 0.031189
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.0631322860717773,
                    "model_output": 2.0631,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1905
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1068
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.1024
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0754
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0479
                        }
                      ],
                      "others": 0.157,
                      "total": 2.0631,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129063
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.065652
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.059166
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.041429
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.025444
                        }
                      ],
                      "others_margin": 0.079171
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.3119080066680908,
                    "model_output": 1.3119,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1272
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0887
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0773
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0349
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0341
                        }
                      ],
                      "others": 0.1047,
                      "total": 1.3119,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.14018
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.087279
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.070308
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.030189
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.028664
                        }
                      ],
                      "others_margin": 0.083264
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.3887386322021484,
                    "model_output": 3.3887,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4098
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3382
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.2953
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.1551
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.089
                        }
                      ],
                      "others": -0.1592,
                      "total": 3.3887,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.11301
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.09233
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.081078
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.041751
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.024764
                        }
                      ],
                      "others_margin": -0.045908
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.292014241218567,
                    "model_output": 1.292,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1577
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0996
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0913
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0765
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0459
                        }
                      ],
                      "others": -0.1202,
                      "total": 1.292,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.107816
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.06673
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.061341
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.051122
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.031972
                        }
                      ],
                      "others_margin": -0.088947
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.37231773138046265,
                    "model_output": 0.3723,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1223
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0503
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0137
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0125
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0113
                        }
                      ],
                      "others": -0.0205,
                      "total": 0.3723,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.122285
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.050299
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.013698
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.012502
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011341
                        }
                      ],
                      "others_margin": -0.020491
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.74716854095459,
                    "model_output": 6.7472,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "touches",
                          "contribution": 0.0209
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0182
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0155
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0151
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0128
                        }
                      ],
                      "others": -0.0389,
                      "total": 6.7472,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "touches",
                          "margin": 0.020927
                        },
                        {
                          "name": "rating",
                          "margin": 0.018166
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.015544
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.015102
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.012771
                        }
                      ],
                      "others_margin": -0.038889
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 6,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0211, quality 0.660)",
              "stats": {
                "interceptions": 1.155,
                "tackles": 2.1067,
                "tackles_won": 1.3396,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 0.9911,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.7293,
                "fouls_drawn": 0.8102,
                "blocks": 0.6049,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0717,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.0211,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0394)",
              "stats": {
                "interceptions": 1.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3652,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0717,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802
              },
              "params": {
                "blend_weight": 0.0394,
                "history_matches": 6,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.3396,
                  "after": 1.3065
                },
                {
                  "stat": "wasFouled",
                  "before": 0.8102,
                  "after": 0.7783
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.155,
                  "after": 1.1292
                },
                {
                  "stat": "totalCross",
                  "before": 0.9911,
                  "after": 1.0111
                },
                {
                  "stat": "totalShots",
                  "before": 0.3802,
                  "after": 0.3652
                },
                {
                  "stat": "fouls",
                  "before": 0.7293,
                  "after": 0.74
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0717,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802
              },
              "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.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0717,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.532,
                "opponent_faced": "Alex Iwobi",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Alex Iwobi",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0717,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.532,
                "opponent_faced": "Alex Iwobi",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "interceptions": 1.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0856,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.532,
                "opponent_faced": "Alex Iwobi",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0717,
                  "after": 0.0856
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 75.0)",
              "stats": {
                "interceptions": 1.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0856,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.532,
                "opponent_faced": "Alex Iwobi",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.8,
                "fifa_overall": 75.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": 3641,
                "fifa_rank": 2211.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0856,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.532,
                "opponent_faced": "Alex Iwobi",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "goal_rate": 0.0,
                "scorer_weight": 0.001,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0008,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.1292,
                "tackles": 2.1067,
                "tackles_won": 1.3065,
                "clearances": 3.4602,
                "aerial_won": 1.3193,
                "total_shots": 0.3802,
                "rating": 6.7472,
                "minutes": 90.0,
                "total_pass": 27.0455,
                "accurate_pass": 22.548,
                "duels_won": 4.3701,
                "total_long_balls": 4.6676,
                "accurate_long_balls": 2.6008,
                "total_own_half_passes": 13.3525,
                "accurate_own_half_passes": 11.7482,
                "total_opp_half_passes": 13.693,
                "accurate_opp_half_passes": 10.8,
                "crosses_total": 1.0111,
                "crosses_accurate": 0.6537,
                "touches": 50.5181,
                "possession_lost": 11.2156,
                "dispossessed": 0.4152,
                "duels_lost": 3.489,
                "aerial_lost": 0.2868,
                "total_contest": 1.5098,
                "won_contest": 0.1777,
                "ball_recovery": 2.7963,
                "challenges_lost": 0.7256,
                "fouls": 0.74,
                "fouls_drawn": 0.7783,
                "blocks": 0.6049,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0856,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 9.4178,
                "total_progression": 48.4012,
                "progressive_carries": 1.0003,
                "key_pass": 1.3811,
                "shots_off_target": 0.3802,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.7,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.9,
                "defensive_success_rate": 0.532,
                "opponent_faced": "Alex Iwobi",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.082,
                "finishing_factor": 1.0,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.082,
                "assist_rate": 0.0,
                "provider_weight": 0.0685,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0926,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Carl Rushworth": {
          "player_id": 1005800,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 19,
          "height": 191,
          "market_value": 21000000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.1529,
            "rating": 6.6194,
            "minutes": 90,
            "total_pass": 43,
            "accurate_pass": 22,
            "total_long_balls": 32,
            "accurate_long_balls": 11,
            "touches": 53,
            "clearances": 0,
            "ball_recovery": 10,
            "high_claims": 1,
            "punches": 0.4673,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 1,
            "possession_lost": 22.0515,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "gk_engine_opponent_lambda": 1.342,
            "shots_faced": 12.3,
            "expected_saves": 3.01,
            "high_pressure_saves": 1.04,
            "opponent_faced": "Gonzalo García, Josh King",
            "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": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 4.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0038,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 19,
                "ball_recovery": 8,
                "saves": 2,
                "goals_prevented": -1.6781
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 22,
                "ball_recovery": 13,
                "saves": 4,
                "goals_prevented": -0.5714
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 48,
                "accurate_pass": 24,
                "key_pass": 1,
                "ball_recovery": 10,
                "saves": 2,
                "goals_prevented": 0.0814
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0061,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 20,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 2,
                "goals_prevented": -1.3592
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester 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": 9,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 9,
                "saves": 2,
                "goals_prevented": 0.4113
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_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": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 31,
                "clearances": 1,
                "ball_recovery": 13,
                "saves": 1,
                "goals_prevented": -0.496
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0059,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 29,
                "clearances": 1,
                "ball_recovery": 7,
                "saves": 2,
                "goals_prevented": -0.5631
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 3329,
            "combined_rank_score": 1282.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 765.0,
            "sofascore_rating": 6.65,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1799.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6194,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carl Rushworth",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Williot Swedberg",
                  "ranking": 3324
                },
                {
                  "player_name": "Leandro Cabrera",
                  "ranking": 3325
                },
                {
                  "player_name": "Alejandro Zendejas",
                  "ranking": 3326
                },
                {
                  "player_name": "Sacha Boey",
                  "ranking": 3327
                },
                {
                  "player_name": "Hugo Cuypers",
                  "ranking": 3328
                }
              ],
              "lower": [
                {
                  "player_name": "Juan Brunetta",
                  "ranking": 3330
                },
                {
                  "player_name": "Alexis Vega",
                  "ranking": 3331
                },
                {
                  "player_name": "Gaëtan Laborde",
                  "ranking": 3332
                },
                {
                  "player_name": "Georges-Kévin Nkoudou",
                  "ranking": 3333
                },
                {
                  "player_name": "Oleksandr Zubkov",
                  "ranking": 3334
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.707,
          "history_matches": 7,
          "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": 7,
            "data_confidence": 0.707,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.017,
            "fbref_prior_metrics": {
              "squad": "Coventry 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 (G_service) evaluated 7 historical appearances across 3 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 3.0975,
                "goals_prevented": -0.1504,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.0695,
                "accurate_pass": 21.3518,
                "total_long_balls": 31.1734,
                "accurate_long_balls": 10.866,
                "touches": 52.024,
                "clearances": 0.4321,
                "ball_recovery": 10.1858,
                "high_claims": 1.3818,
                "punches": 0.4595,
                "aerial_won": 0.1152,
                "sweeper_actions": 1.1599,
                "sweeper_accurate": 0.858,
                "saves_inside_box": 0.9101,
                "possession_lost": 21.6829,
                "duels_won": 0.3661,
                "duels_lost": 0.1877,
                "total_contest": 0.1152,
                "won_contest": 0.1152,
                "fouls": 0.0,
                "fouls_drawn": 0.1356,
                "total_own_half_passes": 14.8021,
                "accurate_own_half_passes": 12.8066
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-24T10:04:55.355626+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 200,
                    "rows": 7186
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 4.4
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "possessionLostCtrl": 21.6829,
                  "distribution_accuracy": 0.8137,
                  "saves": 2.2774,
                  "goalkeeperValueNormalized": -0.2698,
                  "save_contribution": 1.5803,
                  "accurateOwnHalfPasses": 12.8066
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 3.0975096225738525,
                    "model_output": 3.0975,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0396
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.0396
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0361
                      },
                      {
                        "name": "defensiveValueNormalized",
                        "importance": 0.0356
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.9357,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.1113
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0739
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "contribution": -0.0514
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0306
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0277
                        }
                      ],
                      "others": 0.0251,
                      "total": 3.0975,
                      "log_link": true,
                      "margin_base": 1.076962,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.037223
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.023975
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "margin": -0.016592
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.009906
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.008977
                        }
                      ],
                      "others_margin": 0.008101
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.15035706758499146,
                    "model_output": -0.1504,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0403
                      },
                      {
                        "name": "punches",
                        "importance": 0.0402
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.039
                      },
                      {
                        "name": "goodHighClaim",
                        "importance": 0.0381
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0377
                      }
                    ],
                    "decomposition": {
                      "base": -0.0276,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0698
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "contribution": -0.052
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0366
                        },
                        {
                          "name": "goalsPrevented",
                          "contribution": 0.0302
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0281
                        }
                      ],
                      "others": -0.1061,
                      "total": -0.1504,
                      "log_link": false,
                      "margin_base": -0.027557,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.06981
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "margin": -0.052033
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.036566
                        },
                        {
                          "name": "goalsPrevented",
                          "margin": 0.030158
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.028116
                        }
                      ],
                      "others_margin": -0.106052
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.619443893432617,
                    "model_output": 6.6194,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0419
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0397
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0368
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0351
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 6.9908,
                      "items": [
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.2308
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0753
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0585
                        },
                        {
                          "name": "goalsPrevented",
                          "contribution": 0.0315
                        },
                        {
                          "name": "history_matches",
                          "contribution": -0.0288
                        }
                      ],
                      "others": -0.1265,
                      "total": 6.6194,
                      "log_link": false,
                      "margin_base": 6.990849,
                      "item_margins": [
                        {
                          "name": "totalLongBalls",
                          "margin": -0.230767
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.075328
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.05845
                        },
                        {
                          "name": "goalsPrevented",
                          "margin": 0.031539
                        },
                        {
                          "name": "history_matches",
                          "margin": -0.02877
                        }
                      ],
                      "others_margin": -0.126528
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0170, quality 0.641)",
              "stats": {
                "saves": 3.1502,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1379,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.017,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0361)",
              "stats": {
                "saves": 3.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243
              },
              "params": {
                "blend_weight": 0.0361,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 3.1502,
                  "after": 3.0906
                },
                {
                  "stat": "wasFouled",
                  "before": 0.1379,
                  "after": 0.1329
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 3.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243
              },
              "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.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243,
                "gk_engine_opponent_lambda": 1.342,
                "shots_faced": 12.7,
                "expected_saves": 3.1,
                "high_pressure_saves": 1.07,
                "opponent_faced": "Gonzalo García, Josh King",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Gonzalo García, Josh King",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.342
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 3.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243,
                "gk_engine_opponent_lambda": 1.342,
                "shots_faced": 12.7,
                "expected_saves": 3.1,
                "high_pressure_saves": 1.07,
                "opponent_faced": "Gonzalo García, Josh King",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "saves": 3.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243,
                "gk_engine_opponent_lambda": 1.342,
                "shots_faced": 12.3,
                "expected_saves": 3.01,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Gonzalo García, Josh King",
                "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.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 12.7,
                  "after": 12.3
                },
                {
                  "stat": "expected_saves",
                  "before": 3.1,
                  "after": 3.01
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.07,
                  "after": 1.04
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 76.0)",
              "stats": {
                "saves": 3.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243,
                "gk_engine_opponent_lambda": 1.342,
                "shots_faced": 12.3,
                "expected_saves": 3.01,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Gonzalo García, Josh King",
                "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": 76.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": 3329,
                "fifa_rank": 1799.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": {
                "saves": 3.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243,
                "gk_engine_opponent_lambda": 1.342,
                "shots_faced": 12.3,
                "expected_saves": 3.01,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Gonzalo García, Josh King",
                "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": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "saves": 3.0906,
                "goals_prevented": -0.1529,
                "rating": 6.6194,
                "minutes": 90.0,
                "total_pass": 42.7847,
                "accurate_pass": 21.7148,
                "total_long_balls": 31.7033,
                "accurate_long_balls": 11.0507,
                "touches": 52.9084,
                "clearances": 0.4394,
                "ball_recovery": 10.359,
                "high_claims": 1.4053,
                "punches": 0.4673,
                "aerial_won": 0.1172,
                "sweeper_actions": 1.1796,
                "sweeper_accurate": 0.8726,
                "saves_inside_box": 0.9256,
                "possession_lost": 22.0515,
                "duels_won": 0.3723,
                "duels_lost": 0.1909,
                "total_contest": 0.1172,
                "won_contest": 0.1172,
                "fouls": 0.0,
                "fouls_drawn": 0.1329,
                "total_own_half_passes": 15.0537,
                "accurate_own_half_passes": 13.0243,
                "gk_engine_opponent_lambda": 1.342,
                "shots_faced": 12.3,
                "expected_saves": 3.01,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Gonzalo García, Josh King",
                "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": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Daniel Bentley": {
          "player_id": 101367,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 25,
          "height": 188,
          "market_value": 730000,
          "stats": {
            "saves": 0,
            "goals_prevented": -0.0088,
            "rating": 6.9659,
            "minutes": 4,
            "total_pass": 4,
            "accurate_pass": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "touches": 6,
            "clearances": 0,
            "ball_recovery": 1,
            "high_claims": 0,
            "punches": 0.2405,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 2.2778,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "bench_appearance_probability": 0.109,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 14023935,
              "match_date": "2026-05-09",
              "home_team": "Brighton & Hove Albion",
              "away_team": "Wolverhampton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wolverhampton",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 5,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 10,
                "saves": 3,
                "goals_prevented": 0.2494
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023951,
              "match_date": "2026-05-02",
              "home_team": "Wolverhampton",
              "away_team": "Sunderland",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Wolverhampton",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 24,
                "clearances": 1,
                "ball_recovery": 11,
                "saves": 1,
                "goals_prevented": 0.3913
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025036,
              "match_date": "2026-04-18",
              "home_team": "Leeds United",
              "away_team": "Wolverhampton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wolverhampton",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 15,
                "clearances": 2,
                "ball_recovery": 5,
                "saves": 3,
                "goals_prevented": -0.4926
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 4833,
            "combined_rank_score": 2924.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 3.0,
            "fifa_rank": 5591.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9659,
            "source_file": "data/player_rankings.csv",
            "player_name": "Daniel Bentley",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jeanuël Belocian",
                  "ranking": 4828
                },
                {
                  "player_name": "Max Alleyne",
                  "ranking": 4829
                },
                {
                  "player_name": "Herrando",
                  "ranking": 4830
                },
                {
                  "player_name": "Nectarios Triantis",
                  "ranking": 4831
                },
                {
                  "player_name": "Andy Polo",
                  "ranking": 4832
                }
              ],
              "lower": [
                {
                  "player_name": "Marco Pellegrino",
                  "ranking": 4834
                },
                {
                  "player_name": "Álex Muñoz",
                  "ranking": 4835
                },
                {
                  "player_name": "Malick Yalcouyé",
                  "ranking": 4836
                },
                {
                  "player_name": "Juan Ferney Otero",
                  "ranking": 4837
                },
                {
                  "player_name": "Lucas Silva",
                  "ranking": 4838
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "G_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "accurateLongBalls",
              "totalOwnHalfPasses",
              "accurateOwnHalfPasses",
              "saves",
              "savedShotsFromInsideTheBox",
              "goodHighClaim",
              "punches",
              "aerialWon",
              "totalKeeperSweeper",
              "accurateKeeperSweeper",
              "totalClearance",
              "ballRecovery",
              "touches",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "goalsPrevented",
              "rating",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 4.392222187561249,
            "bench_appearance_prob": 0.10873737216187492,
            "market_value_adjustment": 0.9873,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "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 G_service (3 historical appearances) to 4.4 expected mins (appearance prob 0.11); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.9512,
                "goals_prevented": -0.0577,
                "rating": 6.9659,
                "minutes": 28.5,
                "total_pass": 29.0564,
                "accurate_pass": 14.0865,
                "total_long_balls": 19.3071,
                "accurate_long_balls": 4.3372,
                "touches": 40.62,
                "clearances": 1.6696,
                "ball_recovery": 8.9261,
                "high_claims": 1.0,
                "punches": 1.5806,
                "aerial_won": 0.3887,
                "sweeper_actions": 1.2721,
                "sweeper_accurate": 1.2721,
                "saves_inside_box": 2.3392,
                "possession_lost": 14.9699,
                "duels_won": 1.1662,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.7775,
                "total_own_half_passes": 13.6997,
                "accurate_own_half_passes": 10.9718
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-24T10:04:55.355626+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 200,
                    "rows": 7186
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "possessionLostCtrl": 14.9699,
                  "distribution_accuracy": 0.7251,
                  "saves": 2.3392,
                  "goalkeeperValueNormalized": 0.4738,
                  "save_contribution": 2.4271,
                  "accurateOwnHalfPasses": 10.9718
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.9511821269989014,
                    "model_output": 2.9512,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0396
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.0396
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0361
                      },
                      {
                        "name": "defensiveValueNormalized",
                        "importance": 0.0356
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.9357,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1336
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0568
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.024
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0216
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.02
                        }
                      ],
                      "others": 0.0267,
                      "total": 2.9512,
                      "log_link": true,
                      "margin_base": 1.076962,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.046591
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.020062
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.008362
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.007453
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.006859
                        }
                      ],
                      "others_margin": 0.009098
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.05766338109970093,
                    "model_output": -0.0577,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0403
                      },
                      {
                        "name": "punches",
                        "importance": 0.0402
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.039
                      },
                      {
                        "name": "goodHighClaim",
                        "importance": 0.0381
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0377
                      }
                    ],
                    "decomposition": {
                      "base": -0.0276,
                      "items": [
                        {
                          "name": "punches",
                          "contribution": -0.0539
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0278
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0183
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0161
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0128
                        }
                      ],
                      "others": -0.0512,
                      "total": -0.0577,
                      "log_link": false,
                      "margin_base": -0.027557,
                      "item_margins": [
                        {
                          "name": "punches",
                          "margin": -0.053895
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.027809
                        },
                        {
                          "name": "saves",
                          "margin": 0.018295
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.016071
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.012792
                        }
                      ],
                      "others_margin": -0.051177
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.96591329574585,
                    "model_output": 6.9659,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0419
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0397
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0368
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0351
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 6.9908,
                      "items": [
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.054
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0417
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0203
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0169
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0154
                        }
                      ],
                      "others": -0.0314,
                      "total": 6.9659,
                      "log_link": false,
                      "margin_base": 6.990849,
                      "item_margins": [
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.053955
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.0417
                        },
                        {
                          "name": "saves",
                          "margin": 0.020278
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.016869
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.015404
                        }
                      ],
                      "others_margin": -0.031493
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9873, quality 0.437)",
              "stats": {
                "saves": 2.9137,
                "goals_prevented": -0.0569,
                "rating": 6.9659,
                "minutes": 28.5,
                "total_pass": 28.6874,
                "accurate_pass": 13.9076,
                "total_long_balls": 19.0619,
                "accurate_long_balls": 4.2821,
                "touches": 40.1041,
                "clearances": 1.6484,
                "ball_recovery": 8.8127,
                "high_claims": 0.9873,
                "punches": 1.5605,
                "aerial_won": 0.3838,
                "sweeper_actions": 1.2559,
                "sweeper_accurate": 1.2559,
                "saves_inside_box": 2.3095,
                "possession_lost": 14.7798,
                "duels_won": 1.1514,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.7676,
                "total_own_half_passes": 13.5257,
                "accurate_own_half_passes": 10.8325
              },
              "params": {
                "market_value_eur": 730000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9873,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.5 to 4.4 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.449,
                "goals_prevented": -0.0088,
                "rating": 6.9659,
                "minutes": 4.39,
                "total_pass": 4.4211,
                "accurate_pass": 2.1433,
                "total_long_balls": 2.9377,
                "accurate_long_balls": 0.6599,
                "touches": 6.1806,
                "clearances": 0.254,
                "ball_recovery": 1.3582,
                "high_claims": 0.1522,
                "punches": 0.2405,
                "aerial_won": 0.0591,
                "sweeper_actions": 0.1936,
                "sweeper_accurate": 0.1936,
                "saves_inside_box": 0.3559,
                "possession_lost": 2.2778,
                "duels_won": 0.1774,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1183,
                "total_own_half_passes": 2.0845,
                "accurate_own_half_passes": 1.6694,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "expected_minutes": 4.39,
                "projection_minutes": 28.5,
                "minutes_scale": 0.1541,
                "appearance_probability": 0.109
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.449,
                "goals_prevented": -0.0088,
                "rating": 6.9659,
                "minutes": 4.39,
                "total_pass": 4.4211,
                "accurate_pass": 2.1433,
                "total_long_balls": 2.9377,
                "accurate_long_balls": 0.6599,
                "touches": 6.1806,
                "clearances": 0.254,
                "ball_recovery": 1.3582,
                "high_claims": 0.1522,
                "punches": 0.2405,
                "aerial_won": 0.0591,
                "sweeper_actions": 0.1936,
                "sweeper_accurate": 0.1936,
                "saves_inside_box": 0.3559,
                "possession_lost": 2.2778,
                "duels_won": 0.1774,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1183,
                "total_own_half_passes": 2.0845,
                "accurate_own_half_passes": 1.6694,
                "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.449,
                "goals_prevented": -0.0088,
                "rating": 6.9659,
                "minutes": 4.39,
                "total_pass": 4.4211,
                "accurate_pass": 2.1433,
                "total_long_balls": 2.9377,
                "accurate_long_balls": 0.6599,
                "touches": 6.1806,
                "clearances": 0.254,
                "ball_recovery": 1.3582,
                "high_claims": 0.1522,
                "punches": 0.2405,
                "aerial_won": 0.0591,
                "sweeper_actions": 0.1936,
                "sweeper_accurate": 0.1936,
                "saves_inside_box": 0.3559,
                "possession_lost": 2.2778,
                "duels_won": 0.1774,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1183,
                "total_own_half_passes": 2.0845,
                "accurate_own_half_passes": 1.6694,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 70.0)",
              "stats": {
                "saves": 0.449,
                "goals_prevented": -0.0088,
                "rating": 6.9659,
                "minutes": 4.39,
                "total_pass": 4.4211,
                "accurate_pass": 2.1433,
                "total_long_balls": 2.9377,
                "accurate_long_balls": 0.6599,
                "touches": 6.1806,
                "clearances": 0.254,
                "ball_recovery": 1.3582,
                "high_claims": 0.1522,
                "punches": 0.2405,
                "aerial_won": 0.0591,
                "sweeper_actions": 0.1936,
                "sweeper_accurate": 0.1936,
                "saves_inside_box": 0.3559,
                "possession_lost": 2.2778,
                "duels_won": 0.1774,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1183,
                "total_own_half_passes": 2.0845,
                "accurate_own_half_passes": 1.6694,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 70.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4833,
                "fifa_rank": 5591.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.0
              }
            }
          ]
        },
        "Aurèle Amenda": {
          "player_id": 999276,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 194,
          "market_value": 15500000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7993,
            "minutes": 14,
            "total_pass": 31,
            "accurate_pass": 26,
            "duels_won": 3,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 16,
            "total_opp_half_passes": 15,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 39,
            "possession_lost": 6.0472,
            "dispossessed": 0.5001,
            "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.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0028,
            "expected_assists": 0.0814,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 11,
            "total_progression": 57,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.229,
            "bench_expected_minutes": 14.16,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 18,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 6,
                "duels_won": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.343,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 22,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0154,
                "expected_assists": 0.0373,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 73,
                "accurate_pass": 69,
                "clearances": 4,
                "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": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 28,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3516,
            "combined_rank_score": 1492.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2692.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7993,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aurèle Amenda",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Robin Zentner",
                  "ranking": 3511
                },
                {
                  "player_name": "Kevin Diks",
                  "ranking": 3512
                },
                {
                  "player_name": "Zuriko Davitashvili",
                  "ranking": 3513
                },
                {
                  "player_name": "Grischa Prömel",
                  "ranking": 3514
                },
                {
                  "player_name": "Pol Lozano",
                  "ranking": 3515
                }
              ],
              "lower": [
                {
                  "player_name": "Manu Morlanes",
                  "ranking": 3517
                },
                {
                  "player_name": "Alexis Claude-Maurice",
                  "ranking": 3518
                },
                {
                  "player_name": "Sebastián Cáceres",
                  "ranking": 3519
                },
                {
                  "player_name": "Anthony Caci",
                  "ranking": 3520
                },
                {
                  "player_name": "Amar Memić",
                  "ranking": 3521
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.52,
          "history_matches": 4,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 4,
            "data_confidence": 0.52,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.155021941280786,
            "bench_appearance_prob": 0.229,
            "market_value_adjustment": 1.0133,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "Bench projection scaled from XGBoost D_service (4 historical appearances) to 14.2 expected mins (appearance prob 0.23); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3409,
                "tackles": 0.4012,
                "tackles_won": 0.2511,
                "clearances": 1.4561,
                "aerial_won": 0.8242,
                "total_shots": 0.1746,
                "rating": 6.7993,
                "minutes": 18.0,
                "total_pass": 39.1193,
                "accurate_pass": 32.5573,
                "duels_won": 4.2362,
                "total_long_balls": 6.3776,
                "accurate_long_balls": 4.1449,
                "total_own_half_passes": 20.7218,
                "accurate_own_half_passes": 19.5691,
                "total_opp_half_passes": 18.3975,
                "accurate_opp_half_passes": 12.9882,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 48.3191,
                "possession_lost": 7.5889,
                "dispossessed": 0.4935,
                "duels_lost": 3.4935,
                "aerial_lost": 1.1927,
                "total_contest": 0.2267,
                "won_contest": 0.2267,
                "ball_recovery": 2.598,
                "challenges_lost": 0.3138,
                "fouls": 1.4935,
                "fouls_drawn": 0.0,
                "blocks": 0.892,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0035,
                "expected_assists": 0.1021,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.4231,
                "total_progression": 71.9927,
                "progressive_carries": 1.1336,
                "key_pass": 0.3138,
                "shots_off_target": 0.1746
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3138,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2667,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2267,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1927,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.899,
                  "aerialWon": 3.7427,
                  "totalClearance_p90": 3.899,
                  "totalTackle": 0.2667,
                  "defensive_actions": 1.1611
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3408767879009247,
                    "model_output": 0.3409,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4858
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0146
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.013
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0094
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0086
                        }
                      ],
                      "others": -0.0172,
                      "total": 0.3409,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.831638
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.038128
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.033945
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.025444
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.023739
                        }
                      ],
                      "others_margin": -0.04915
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.4011653661727905,
                    "model_output": 0.4012,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7805
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0539
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0419
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0177
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0159
                        }
                      ],
                      "others": -0.072,
                      "total": 0.4012,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.830791
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.093721
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.079395
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.035628
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.033106
                        }
                      ],
                      "others_margin": -0.16504
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.2510870695114136,
                    "model_output": 0.2511,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4565
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0378
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0258
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0136
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0081
                        }
                      ],
                      "others": -0.0521,
                      "total": 0.2511,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.77699
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.102465
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.076343
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.042869
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.026389
                        }
                      ],
                      "others_margin": -0.188498
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.4560891389846802,
                    "model_output": 1.4561,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.1378
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1688
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1283
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0886
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0774
                        }
                      ],
                      "others": -0.1171,
                      "total": 1.4561,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.978626
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.123228
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.084455
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.05755
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.05045
                        }
                      ],
                      "others_margin": -0.077325
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.8242449164390564,
                    "model_output": 0.8242,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8227
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.3531
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0555
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0381
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0366
                        }
                      ],
                      "others": -0.1484,
                      "total": 0.8242,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.901299
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.487278
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.058843
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.038447
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.036932
                        }
                      ],
                      "others_margin": -0.16544
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.17461305856704712,
                    "model_output": 0.1746,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2115
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0711
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0335
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0263
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0155
                        }
                      ],
                      "others": -0.0404,
                      "total": 0.1746,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.21155
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.071087
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.033459
                        },
                        {
                          "name": "rating",
                          "margin": -0.026285
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.015483
                        }
                      ],
                      "others_margin": -0.040347
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7992939949035645,
                    "model_output": 6.7993,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.028
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0253
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0139
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0131
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0116
                        }
                      ],
                      "others": 0.0224,
                      "total": 6.7993,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.027957
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.02527
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.013901
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.0131
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011584
                        }
                      ],
                      "others_margin": 0.02238
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0133, quality 0.585)",
              "stats": {
                "interceptions": 0.3454,
                "tackles": 0.4065,
                "tackles_won": 0.2544,
                "clearances": 1.4755,
                "aerial_won": 0.8352,
                "total_shots": 0.1769,
                "rating": 6.7993,
                "minutes": 18.0,
                "total_pass": 39.6396,
                "accurate_pass": 32.9903,
                "duels_won": 4.2925,
                "total_long_balls": 6.4624,
                "accurate_long_balls": 4.2,
                "total_own_half_passes": 20.9974,
                "accurate_own_half_passes": 19.8294,
                "total_opp_half_passes": 18.6422,
                "accurate_opp_half_passes": 13.1609,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 48.9617,
                "possession_lost": 7.6898,
                "dispossessed": 0.5001,
                "duels_lost": 3.54,
                "aerial_lost": 1.2086,
                "total_contest": 0.2297,
                "won_contest": 0.2297,
                "ball_recovery": 2.6326,
                "challenges_lost": 0.318,
                "fouls": 1.5134,
                "fouls_drawn": 0.0,
                "blocks": 0.9039,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0035,
                "expected_assists": 0.1035,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.6149,
                "total_progression": 72.9502,
                "progressive_carries": 1.1487,
                "key_pass": 0.318,
                "shots_off_target": 0.1769
              },
              "params": {
                "market_value_eur": 15500000,
                "quality_factor": 0.5846,
                "boost_factor": 1.0133,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0481)",
              "stats": {
                "interceptions": 0.3288,
                "tackles": 0.4065,
                "tackles_won": 0.2422,
                "clearances": 1.4755,
                "aerial_won": 0.8352,
                "total_shots": 0.1732,
                "rating": 6.7993,
                "minutes": 18.0,
                "total_pass": 39.6396,
                "accurate_pass": 32.9903,
                "duels_won": 4.2925,
                "total_long_balls": 6.4624,
                "accurate_long_balls": 4.2,
                "total_own_half_passes": 20.9974,
                "accurate_own_half_passes": 19.8294,
                "total_opp_half_passes": 18.6422,
                "accurate_opp_half_passes": 13.1609,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 48.9617,
                "possession_lost": 7.6898,
                "dispossessed": 0.5001,
                "duels_lost": 3.54,
                "aerial_lost": 1.2086,
                "total_contest": 0.2297,
                "won_contest": 0.2297,
                "ball_recovery": 2.6326,
                "challenges_lost": 0.318,
                "fouls": 1.455,
                "fouls_drawn": 0.0,
                "blocks": 0.9039,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0035,
                "expected_assists": 0.1035,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 14.6149,
                "total_progression": 72.9502,
                "progressive_carries": 1.1487,
                "key_pass": 0.318,
                "shots_off_target": 0.1769
              },
              "params": {
                "blend_weight": 0.0481,
                "history_matches": 4,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.5134,
                  "after": 1.455
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.3454,
                  "after": 0.3288
                },
                {
                  "stat": "wonTackle",
                  "before": 0.2544,
                  "after": 0.2422
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.0 to 14.2 expected minutes (appearance prob 0.23)",
              "stats": {
                "interceptions": 0.2586,
                "tackles": 0.3197,
                "tackles_won": 0.1905,
                "clearances": 1.1603,
                "aerial_won": 0.6568,
                "total_shots": 0.1391,
                "rating": 6.7993,
                "minutes": 14.16,
                "total_pass": 31.1722,
                "accurate_pass": 25.9432,
                "duels_won": 3.3756,
                "total_long_balls": 5.082,
                "accurate_long_balls": 3.3028,
                "total_own_half_passes": 16.5121,
                "accurate_own_half_passes": 15.5936,
                "total_opp_half_passes": 14.66,
                "accurate_opp_half_passes": 10.3496,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.503,
                "possession_lost": 6.0472,
                "dispossessed": 0.5001,
                "duels_lost": 2.7838,
                "aerial_lost": 1.2086,
                "total_contest": 0.1806,
                "won_contest": 0.1806,
                "ball_recovery": 2.0703,
                "challenges_lost": 0.318,
                "fouls": 1.1442,
                "fouls_drawn": 0.0,
                "blocks": 0.7108,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0028,
                "expected_assists": 0.0814,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.493,
                "total_progression": 57.3673,
                "progressive_carries": 0.9033,
                "key_pass": 0.2501,
                "shots_off_target": 0.1391,
                "bench_appearance_probability": 0.229,
                "bench_expected_minutes": 14.16
              },
              "params": {
                "expected_minutes": 14.16,
                "projection_minutes": 18.0,
                "minutes_scale": 0.7864,
                "appearance_probability": 0.229
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2586,
                "tackles": 0.3197,
                "tackles_won": 0.1905,
                "clearances": 1.1603,
                "aerial_won": 0.6568,
                "total_shots": 0.1391,
                "rating": 6.7993,
                "minutes": 14.16,
                "total_pass": 31.1722,
                "accurate_pass": 25.9432,
                "duels_won": 3.3756,
                "total_long_balls": 5.082,
                "accurate_long_balls": 3.3028,
                "total_own_half_passes": 16.5121,
                "accurate_own_half_passes": 15.5936,
                "total_opp_half_passes": 14.66,
                "accurate_opp_half_passes": 10.3496,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.503,
                "possession_lost": 6.0472,
                "dispossessed": 0.5001,
                "duels_lost": 2.7838,
                "aerial_lost": 1.2086,
                "total_contest": 0.1806,
                "won_contest": 0.1806,
                "ball_recovery": 2.0703,
                "challenges_lost": 0.318,
                "fouls": 1.1442,
                "fouls_drawn": 0.0,
                "blocks": 0.7108,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0028,
                "expected_assists": 0.0814,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.493,
                "total_progression": 57.3673,
                "progressive_carries": 0.9033,
                "key_pass": 0.2501,
                "shots_off_target": 0.1391,
                "bench_appearance_probability": 0.229,
                "bench_expected_minutes": 14.16
              },
              "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.2586,
                "tackles": 0.3197,
                "tackles_won": 0.1905,
                "clearances": 1.1603,
                "aerial_won": 0.6568,
                "total_shots": 0.1391,
                "rating": 6.7993,
                "minutes": 14.16,
                "total_pass": 31.1722,
                "accurate_pass": 25.9432,
                "duels_won": 3.3756,
                "total_long_balls": 5.082,
                "accurate_long_balls": 3.3028,
                "total_own_half_passes": 16.5121,
                "accurate_own_half_passes": 15.5936,
                "total_opp_half_passes": 14.66,
                "accurate_opp_half_passes": 10.3496,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.503,
                "possession_lost": 6.0472,
                "dispossessed": 0.5001,
                "duels_lost": 2.7838,
                "aerial_lost": 1.2086,
                "total_contest": 0.1806,
                "won_contest": 0.1806,
                "ball_recovery": 2.0703,
                "challenges_lost": 0.318,
                "fouls": 1.1442,
                "fouls_drawn": 0.0,
                "blocks": 0.7108,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0028,
                "expected_assists": 0.0814,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.493,
                "total_progression": 57.3673,
                "progressive_carries": 0.9033,
                "key_pass": 0.2501,
                "shots_off_target": 0.1391,
                "bench_appearance_probability": 0.229,
                "bench_expected_minutes": 14.16,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.229,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 74.0)",
              "stats": {
                "interceptions": 0.2586,
                "tackles": 0.3197,
                "tackles_won": 0.1905,
                "clearances": 1.1603,
                "aerial_won": 0.6568,
                "total_shots": 0.1391,
                "rating": 6.7993,
                "minutes": 14.16,
                "total_pass": 31.1722,
                "accurate_pass": 25.9432,
                "duels_won": 3.3756,
                "total_long_balls": 5.082,
                "accurate_long_balls": 3.3028,
                "total_own_half_passes": 16.5121,
                "accurate_own_half_passes": 15.5936,
                "total_opp_half_passes": 14.66,
                "accurate_opp_half_passes": 10.3496,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 38.503,
                "possession_lost": 6.0472,
                "dispossessed": 0.5001,
                "duels_lost": 2.7838,
                "aerial_lost": 1.2086,
                "total_contest": 0.1806,
                "won_contest": 0.1806,
                "ball_recovery": 2.0703,
                "challenges_lost": 0.318,
                "fouls": 1.1442,
                "fouls_drawn": 0.0,
                "blocks": 0.7108,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0028,
                "expected_assists": 0.0814,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.493,
                "total_progression": 57.3673,
                "progressive_carries": 0.9033,
                "key_pass": 0.2501,
                "shots_off_target": 0.1391,
                "bench_appearance_probability": 0.229,
                "bench_expected_minutes": 14.16,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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": 7,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3516,
                "fifa_rank": 2692.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Liam Kitching": {
          "player_id": 921006,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 186,
          "market_value": 15200000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "total_pass": 7,
            "accurate_pass": 6,
            "expected_goals": 0.0031,
            "rating": 7.0,
            "minutes": 14,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.0842,
            "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.0063,
            "assists": 0,
            "expected_assists": 0.009,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0024,
            "key_pass": 0,
            "ball_carries": 3,
            "total_progression": 10,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.325,
            "bench_expected_minutes": 14.14,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "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": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3718,
            "combined_rank_score": 1691.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3270.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.0,
            "source_file": "data/player_rankings.csv",
            "player_name": "Liam Kitching",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                },
                {
                  "player_name": "Joe Gelhardt",
                  "ranking": 3717
                }
              ],
              "lower": [
                {
                  "player_name": "Andreas Tetteh",
                  "ranking": 3719
                },
                {
                  "player_name": "Kiril Despodov",
                  "ranking": 3720
                },
                {
                  "player_name": "Lamare Bogarde",
                  "ranking": 3721
                },
                {
                  "player_name": "Darius Olaru",
                  "ranking": 3722
                },
                {
                  "player_name": "Jairo Concha",
                  "ranking": 3723
                }
              ]
            }
          },
          "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": 14.142160785804542,
            "bench_appearance_prob": 0.3246436720820246,
            "market_value_adjustment": 0.5814,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "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 (€15,200,000) scaled to 14.1 expected mins; FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position D (quality 0.58)",
              "stats": {
                "interceptions": 1.7,
                "tackles": 2.6,
                "tackles_won": 1.6,
                "clearances": 2.9,
                "aerial_won": 2.5,
                "duels_won": 5.9,
                "total_pass": 47.0,
                "accurate_pass": 37.0,
                "expected_goals": 0.02,
                "rating": 7.0,
                "minutes": 90.0,
                "total_long_balls": 6.0,
                "accurate_long_balls": 3.2,
                "total_own_half_passes": 30.0,
                "accurate_own_half_passes": 24.0,
                "total_opp_half_passes": 11.0,
                "accurate_opp_half_passes": 8.0,
                "crosses_total": 1.0,
                "crosses_accurate": 0.4,
                "touches": 62.0,
                "possession_lost": 6.9,
                "dispossessed": 0.5,
                "duels_lost": 3.7,
                "aerial_lost": 2.2,
                "total_contest": 4.3,
                "won_contest": 2.5,
                "ball_recovery": 5.3,
                "challenges_lost": 1.1,
                "fouls": 1.1,
                "fouls_drawn": 0.7,
                "blocks": 0.8,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.04,
                "assist_rate": 0.04,
                "expected_assists": 0.057,
                "total_shots": 0.4,
                "shots_on_target": 0.17,
                "shots_off_target": 0.22,
                "big_chances_created": 0.04,
                "xgot": 0.015,
                "key_pass": 0.7,
                "ball_carries": 22.0,
                "total_progression": 65.0,
                "progressive_carries": 5.0
              },
              "params": {
                "market_value_eur": 15200000,
                "quality_factor": 0.5814
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 14.1 expected minutes (appearance prob 0.32)",
              "stats": {
                "interceptions": 0.2671,
                "tackles": 0.4086,
                "tackles_won": 0.2514,
                "clearances": 0.4557,
                "aerial_won": 0.3928,
                "duels_won": 0.9271,
                "total_pass": 7.3854,
                "accurate_pass": 5.814,
                "expected_goals": 0.0031,
                "rating": 7.0,
                "minutes": 14.14,
                "total_long_balls": 0.9428,
                "accurate_long_balls": 0.5028,
                "total_own_half_passes": 4.7141,
                "accurate_own_half_passes": 3.7712,
                "total_opp_half_passes": 1.7285,
                "accurate_opp_half_passes": 1.2571,
                "crosses_total": 0.1571,
                "crosses_accurate": 0.0629,
                "touches": 9.7424,
                "possession_lost": 1.0842,
                "dispossessed": 0.5,
                "duels_lost": 0.5814,
                "aerial_lost": 2.2,
                "total_contest": 0.6757,
                "won_contest": 0.3928,
                "ball_recovery": 0.8328,
                "challenges_lost": 1.1,
                "fouls": 0.1728,
                "fouls_drawn": 0.11,
                "blocks": 0.1257,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0063,
                "assist_rate": 0.0063,
                "expected_assists": 0.009,
                "total_shots": 0.0629,
                "shots_on_target": 0.0267,
                "shots_off_target": 0.0346,
                "big_chances_created": 0.0063,
                "xgot": 0.0024,
                "key_pass": 0.11,
                "ball_carries": 3.457,
                "total_progression": 10.2138,
                "progressive_carries": 0.7857,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.14
              },
              "params": {
                "expected_minutes": 14.14,
                "projection_minutes": 90.0,
                "minutes_scale": 0.1571,
                "appearance_probability": 0.325
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2671,
                "tackles": 0.4086,
                "tackles_won": 0.2514,
                "clearances": 0.4557,
                "aerial_won": 0.3928,
                "duels_won": 0.9271,
                "total_pass": 7.3854,
                "accurate_pass": 5.814,
                "expected_goals": 0.0031,
                "rating": 7.0,
                "minutes": 14.14,
                "total_long_balls": 0.9428,
                "accurate_long_balls": 0.5028,
                "total_own_half_passes": 4.7141,
                "accurate_own_half_passes": 3.7712,
                "total_opp_half_passes": 1.7285,
                "accurate_opp_half_passes": 1.2571,
                "crosses_total": 0.1571,
                "crosses_accurate": 0.0629,
                "touches": 9.7424,
                "possession_lost": 1.0842,
                "dispossessed": 0.5,
                "duels_lost": 0.5814,
                "aerial_lost": 2.2,
                "total_contest": 0.6757,
                "won_contest": 0.3928,
                "ball_recovery": 0.8328,
                "challenges_lost": 1.1,
                "fouls": 0.1728,
                "fouls_drawn": 0.11,
                "blocks": 0.1257,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0063,
                "assist_rate": 0.0063,
                "expected_assists": 0.009,
                "total_shots": 0.0629,
                "shots_on_target": 0.0267,
                "shots_off_target": 0.0346,
                "big_chances_created": 0.0063,
                "xgot": 0.0024,
                "key_pass": 0.11,
                "ball_carries": 3.457,
                "total_progression": 10.2138,
                "progressive_carries": 0.7857,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.14
              },
              "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.2671,
                "tackles": 0.4086,
                "tackles_won": 0.2514,
                "clearances": 0.4557,
                "aerial_won": 0.3928,
                "duels_won": 0.9271,
                "total_pass": 7.3854,
                "accurate_pass": 5.814,
                "expected_goals": 0.0031,
                "rating": 7.0,
                "minutes": 14.14,
                "total_long_balls": 0.9428,
                "accurate_long_balls": 0.5028,
                "total_own_half_passes": 4.7141,
                "accurate_own_half_passes": 3.7712,
                "total_opp_half_passes": 1.7285,
                "accurate_opp_half_passes": 1.2571,
                "crosses_total": 0.1571,
                "crosses_accurate": 0.0629,
                "touches": 9.7424,
                "possession_lost": 1.0842,
                "dispossessed": 0.5,
                "duels_lost": 0.5814,
                "aerial_lost": 2.2,
                "total_contest": 0.6757,
                "won_contest": 0.3928,
                "ball_recovery": 0.8328,
                "challenges_lost": 1.1,
                "fouls": 0.1728,
                "fouls_drawn": 0.11,
                "blocks": 0.1257,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0063,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0.0629,
                "shots_on_target": 0.0267,
                "shots_off_target": 0.0346,
                "big_chances_created": 0.0063,
                "xgot": 0.0024,
                "key_pass": 0.11,
                "ball_carries": 3.457,
                "total_progression": 10.2138,
                "progressive_carries": 0.7857,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.14,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.325,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 73.0)",
              "stats": {
                "interceptions": 0.2671,
                "tackles": 0.4086,
                "tackles_won": 0.2514,
                "clearances": 0.4557,
                "aerial_won": 0.3928,
                "duels_won": 0.9271,
                "total_pass": 7.3854,
                "accurate_pass": 5.814,
                "expected_goals": 0.0031,
                "rating": 7.0,
                "minutes": 14.14,
                "total_long_balls": 0.9428,
                "accurate_long_balls": 0.5028,
                "total_own_half_passes": 4.7141,
                "accurate_own_half_passes": 3.7712,
                "total_opp_half_passes": 1.7285,
                "accurate_opp_half_passes": 1.2571,
                "crosses_total": 0.1571,
                "crosses_accurate": 0.0629,
                "touches": 9.7424,
                "possession_lost": 1.0842,
                "dispossessed": 0.5,
                "duels_lost": 0.5814,
                "aerial_lost": 2.2,
                "total_contest": 0.6757,
                "won_contest": 0.3928,
                "ball_recovery": 0.8328,
                "challenges_lost": 1.1,
                "fouls": 0.1728,
                "fouls_drawn": 0.11,
                "blocks": 0.1257,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0063,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0.0629,
                "shots_on_target": 0.0267,
                "shots_off_target": 0.0346,
                "big_chances_created": 0.0063,
                "xgot": 0.0024,
                "key_pass": 0.11,
                "ball_carries": 3.457,
                "total_progression": 10.2138,
                "progressive_carries": 0.7857,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.14,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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": 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": 3718,
                "fifa_rank": 3270.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Victor Torp": {
          "player_id": 837011,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 178,
          "market_value": 14500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0382,
            "assist_rate": 0.0523,
            "assists": 0,
            "expected_goals": 0.0277,
            "goal_rate": 0.0538,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.659,
            "minutes": 24,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 7,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 14,
            "possession_lost": 3.4534,
            "dispossessed": 0.1949,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 0,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.703,
            "bench_expected_minutes": 23.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0272,
            "projected_assists": 0,
            "assist_probability": 0.0372,
            "finishing_factor": 1.2155,
            "creation_factor": 1.0712,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 12,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1291,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "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"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 19,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0053,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 11,
                "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": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 28,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1114,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4103,
            "combined_rank_score": 2091.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 915.0,
            "sofascore_rating": 6.5,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3267.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.659,
            "source_file": "data/player_rankings.csv",
            "player_name": "Victor Torp",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Adam Smith",
                  "ranking": 4098
                },
                {
                  "player_name": "Dayne St. Clair",
                  "ranking": 4099
                },
                {
                  "player_name": "Kieffer Moore",
                  "ranking": 4100
                },
                {
                  "player_name": "Ryan Giles",
                  "ranking": 4101
                },
                {
                  "player_name": "Alex Tóth",
                  "ranking": 4102
                }
              ],
              "lower": [
                {
                  "player_name": "Dro Fernández",
                  "ranking": 4104
                },
                {
                  "player_name": "Agustín Sández",
                  "ranking": 4105
                },
                {
                  "player_name": "Axel Tuanzebe",
                  "ranking": 4106
                },
                {
                  "player_name": "Abdoul Ouattara",
                  "ranking": 4107
                },
                {
                  "player_name": "Liam Millar",
                  "ranking": 4108
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.505,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.505,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.88,
            "bench_appearance_prob": 0.703,
            "market_value_adjustment": 1.0115,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 25.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost M_service (4 historical appearances) to 23.9 expected mins (appearance prob 0.70); FBref playing time empirical prior: 2.0 sub appearances, 25.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4448,
                "expected_assists": 0.0332,
                "assists": 0.0387,
                "assist_rate": 0.0387,
                "expected_goals": 0.0258,
                "goals": 0.0398,
                "goal_rate": 0.0398,
                "shots_on_target": 0.1146,
                "total_shots": 0.2854,
                "rating": 6.659,
                "minutes": 17.62,
                "total_pass": 7.1474,
                "accurate_pass": 6.1874,
                "duels_won": 0.0,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.9129,
                "accurate_own_half_passes": 1.3724,
                "total_opp_half_passes": 5.2345,
                "accurate_opp_half_passes": 4.8151,
                "crosses_total": 1.4194,
                "crosses_accurate": 0.5065,
                "touches": 10.2447,
                "possession_lost": 2.5191,
                "dispossessed": 0.1927,
                "duels_lost": 0.6462,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1927,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2267,
                "fouls": 0.2267,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1927,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.9845,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1708
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.2667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.2267,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1927,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.2407,
                  "totalShots": 0.0,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.0635,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4448159337043762,
                    "model_output": 0.4448,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4005
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0387
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0319
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0184
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0165
                        }
                      ],
                      "others": -0.0135,
                      "total": 0.4448,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.593663
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.081666
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.072597
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.042643
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.036595
                        }
                      ],
                      "others_margin": -0.029901
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0331689678132534,
                    "model_output": 0.0332,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0408
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0041
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0029
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0021
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.0332,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.643418
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.096083
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.074639
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.052944
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.046812
                        }
                      ],
                      "others_margin": -0.143412
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03865394741296768,
                    "model_output": 0.0387,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0227
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0114
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0061
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0044
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0096,
                      "total": 0.0387,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.300408
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.194032
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.121161
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.089757
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.065548
                        }
                      ],
                      "others_margin": -0.224452
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.025813313201069832,
                    "model_output": 0.0258,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.043
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.007
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0021
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0014,
                      "total": 0.0258,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.612401
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.409662
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.232298
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.074474
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.066042
                        }
                      ],
                      "others_margin": -0.046017
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03976423293352127,
                    "model_output": 0.0398,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0411
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0119
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0029
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.002
                        }
                      ],
                      "others": 0.0016,
                      "total": 0.0398,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.534042
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.228452
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.167807
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.075779
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.054878
                        }
                      ],
                      "others_margin": 0.03586
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.11455610394477844,
                    "model_output": 0.1146,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1423
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0523
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0233
                        },
                        {
                          "name": "cross_accuracy",
                          "contribution": 0.0049
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0048
                        }
                      ],
                      "others": 0.0064,
                      "total": 0.1146,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.573518
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.335327
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.195143
                        },
                        {
                          "name": "cross_accuracy",
                          "margin": 0.044311
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.04296
                        }
                      ],
                      "others_margin": 0.056721
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.28536364436149597,
                    "model_output": 0.2854,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3777
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2651
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0334
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.03
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0254
                        }
                      ],
                      "others": -0.0307,
                      "total": 0.2854,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.377676
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.265068
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.033403
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.030015
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.025418
                        }
                      ],
                      "others_margin": -0.030789
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.658990383148193,
                    "model_output": 6.659,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0588
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.048
                        },
                        {
                          "name": "rating",
                          "contribution": -0.039
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0098
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0096
                        }
                      ],
                      "others": -0.0319,
                      "total": 6.659,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.058831
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.047977
                        },
                        {
                          "name": "rating",
                          "margin": -0.038975
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.009785
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.009594
                        }
                      ],
                      "others_margin": -0.031899
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "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.0115, quality 0.574)",
              "stats": {
                "key_pass": 0.4499,
                "expected_assists": 0.0336,
                "assists": 0.0391,
                "assist_rate": 0.0391,
                "expected_goals": 0.0261,
                "goals": 0.0402,
                "goal_rate": 0.0402,
                "shots_on_target": 0.1159,
                "total_shots": 0.2887,
                "rating": 6.659,
                "minutes": 17.62,
                "total_pass": 7.2296,
                "accurate_pass": 6.2586,
                "duels_won": 0.0,
                "total_long_balls": 0.2293,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.9349,
                "accurate_own_half_passes": 1.3882,
                "total_opp_half_passes": 5.2947,
                "accurate_opp_half_passes": 4.8705,
                "crosses_total": 1.4357,
                "crosses_accurate": 0.5123,
                "touches": 10.3625,
                "possession_lost": 2.5481,
                "dispossessed": 0.1949,
                "duels_lost": 0.6536,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1949,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.2293,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1949,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.0073,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1728
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0115,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0120)",
              "stats": {
                "key_pass": 0.4499,
                "expected_assists": 0.0336,
                "assists": 0.0386,
                "assist_rate": 0.0386,
                "expected_goals": 0.0261,
                "goals": 0.0397,
                "goal_rate": 0.0397,
                "shots_on_target": 0.1145,
                "total_shots": 0.2852,
                "rating": 6.659,
                "minutes": 17.62,
                "total_pass": 7.2296,
                "accurate_pass": 6.2586,
                "duels_won": 0.0,
                "total_long_balls": 0.2293,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.9349,
                "accurate_own_half_passes": 1.3882,
                "total_opp_half_passes": 5.2947,
                "accurate_opp_half_passes": 4.8705,
                "crosses_total": 1.4373,
                "crosses_accurate": 0.5123,
                "touches": 10.3625,
                "possession_lost": 2.5481,
                "dispossessed": 0.1949,
                "duels_lost": 0.6536,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1973,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.2313,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1949,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.0073,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1728
              },
              "params": {
                "blend_weight": 0.012,
                "history_matches": 4,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1958,
                "prior_reliability": 0.0333,
                "competition": "Premier League",
                "squad": "Coventry City"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.6 to 23.9 expected minutes (appearance prob 0.70)",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0455,
                "assists": 0.0523,
                "assist_rate": 0.0523,
                "expected_goals": 0.0354,
                "goals": 0.0538,
                "goal_rate": 0.0538,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "expected_minutes": 23.88,
                "projection_minutes": 17.62,
                "minutes_scale": 1.3553,
                "appearance_probability": 0.703
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0455,
                "assists": 0.0523,
                "assist_rate": 0.0523,
                "expected_goals": 0.0354,
                "goals": 0.0538,
                "goal_rate": 0.0538,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0455,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0354,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.2155,
                "creation_factor": 1.0712
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 0.703
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0354,
                  "after": 0.0277
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0455,
                  "after": 0.0382
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.2155,
                "creation_factor": 1.0712,
                "fifa_overall": 73.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": 4103,
                "fifa_rank": 3267.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.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0272,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2155,
                "creation_factor": 1.0712,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0272,
                "goal_rate": 0.0538,
                "scorer_weight": 0.0337,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0276,
                "finishing_factor": 1.2155,
                "appearance_weight": 0.703,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0272,
                "projected_assists": 0,
                "assist_probability": 0.0372,
                "finishing_factor": 1.2155,
                "creation_factor": 1.0712,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0372,
                "assist_rate": 0.0523,
                "provider_weight": 0.0409,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0553,
                "creation_factor": 1.0712,
                "appearance_weight": 0.703,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Josh Eccles": {
          "player_id": 944245,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 28,
          "height": 181,
          "market_value": 9600000,
          "stats": {
            "key_pass": 0,
            "assist_rate": 0.0297,
            "assists": 0,
            "expected_assists": 0.0357,
            "expected_goals": 0.0228,
            "total_shots": 0,
            "total_pass": 13,
            "accurate_pass": 11,
            "ball_recovery": 1,
            "duels_won": 2,
            "rating": 7.0,
            "minutes": 22,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 2.13,
            "dispossessed": 0.8,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0173,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0154,
            "ball_carries": 8,
            "total_progression": 20,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.513,
            "bench_expected_minutes": 22.29,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "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": [],
          "ranking": {
            "global_player_rank": 4428,
            "combined_rank_score": 2449.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4749.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0,
            "source_file": "data/player_rankings.csv",
            "player_name": "Josh Eccles",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Wilfred Ndidi",
                  "ranking": 4423
                },
                {
                  "player_name": "Danel Sinani",
                  "ranking": 4424
                },
                {
                  "player_name": "Jimmy Dunne",
                  "ranking": 4425
                },
                {
                  "player_name": "Alan Browne",
                  "ranking": 4426
                },
                {
                  "player_name": "Oh Hyeon Gyu",
                  "ranking": 4427
                }
              ],
              "lower": [
                {
                  "player_name": "Evren Eren Elmalı",
                  "ranking": 4429
                },
                {
                  "player_name": "Mikey Johnston",
                  "ranking": 4430
                },
                {
                  "player_name": "Dorgeles Nene",
                  "ranking": 4431
                },
                {
                  "player_name": "Josh Laurent",
                  "ranking": 4432
                },
                {
                  "player_name": "Matěj Šín",
                  "ranking": 4433
                }
              ]
            }
          },
          "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.290281584086227,
            "bench_appearance_prob": 0.5131946174584648,
            "market_value_adjustment": 0.5177,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "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 (€9,600,000) scaled to 22.3 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 M (quality 0.52)",
              "stats": {
                "key_pass": 1.8,
                "assists": 0.12,
                "assist_rate": 0.12,
                "expected_assists": 0.144,
                "expected_goals": 0.092,
                "total_shots": 1.4,
                "total_pass": 53.0,
                "accurate_pass": 43.0,
                "ball_recovery": 5.3,
                "duels_won": 6.3,
                "rating": 7.0,
                "minutes": 90.0,
                "total_long_balls": 5.0,
                "accurate_long_balls": 3.0,
                "total_own_half_passes": 21.0,
                "accurate_own_half_passes": 17.0,
                "total_opp_half_passes": 20.0,
                "accurate_opp_half_passes": 15.0,
                "crosses_total": 1.4,
                "crosses_accurate": 0.7,
                "touches": 68.0,
                "possession_lost": 8.6,
                "dispossessed": 0.8,
                "duels_lost": 4.3,
                "aerial_won": 1.3,
                "aerial_lost": 1.0,
                "interceptions": 1.1,
                "tackles_won": 1.4,
                "tackles": 1.9,
                "clearances": 0.8,
                "total_contest": 4.1,
                "won_contest": 2.3,
                "challenges_lost": 1.1,
                "fouls": 1.6,
                "fouls_drawn": 1.1,
                "goals": 0.07,
                "goal_rate": 0.07,
                "shots_on_target": 0.6,
                "shots_off_target": 0.5,
                "blocks": 0.3,
                "big_chances_created": 0.11,
                "big_chances_missed": 0.06,
                "xgot": 0.062,
                "ball_carries": 31.0,
                "total_progression": 81.0,
                "progressive_carries": 7.0
              },
              "params": {
                "market_value_eur": 9600000,
                "quality_factor": 0.5177
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 22.3 expected minutes (appearance prob 0.51)",
              "stats": {
                "key_pass": 0.4458,
                "assists": 0.0297,
                "assist_rate": 0.0297,
                "expected_assists": 0.0357,
                "expected_goals": 0.0228,
                "total_shots": 0.3467,
                "total_pass": 13.1265,
                "accurate_pass": 10.6498,
                "ball_recovery": 1.3126,
                "duels_won": 1.5603,
                "rating": 7.0,
                "minutes": 22.29,
                "total_long_balls": 1.2383,
                "accurate_long_balls": 0.743,
                "total_own_half_passes": 5.2011,
                "accurate_own_half_passes": 4.2104,
                "total_opp_half_passes": 4.9534,
                "accurate_opp_half_passes": 3.715,
                "crosses_total": 0.3467,
                "crosses_accurate": 0.1734,
                "touches": 16.8415,
                "possession_lost": 2.13,
                "dispossessed": 0.8,
                "duels_lost": 1.065,
                "aerial_won": 0.322,
                "aerial_lost": 1.0,
                "interceptions": 0.2724,
                "tackles_won": 0.3467,
                "tackles": 0.4706,
                "clearances": 0.1981,
                "total_contest": 1.0154,
                "won_contest": 0.5696,
                "challenges_lost": 1.1,
                "fouls": 0.3963,
                "fouls_drawn": 0.2724,
                "goals": 0.0173,
                "goal_rate": 0.0173,
                "shots_on_target": 0.1486,
                "shots_off_target": 0.1238,
                "blocks": 0.0743,
                "big_chances_created": 0.0272,
                "big_chances_missed": 0.0149,
                "xgot": 0.0154,
                "ball_carries": 7.6778,
                "total_progression": 20.0613,
                "progressive_carries": 1.7337,
                "bench_appearance_probability": 0.513,
                "bench_expected_minutes": 22.29
              },
              "params": {
                "expected_minutes": 22.29,
                "projection_minutes": 90.0,
                "minutes_scale": 0.2477,
                "appearance_probability": 0.513
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4458,
                "assists": 0.0297,
                "assist_rate": 0.0297,
                "expected_assists": 0.0357,
                "expected_goals": 0.0228,
                "total_shots": 0.3467,
                "total_pass": 13.1265,
                "accurate_pass": 10.6498,
                "ball_recovery": 1.3126,
                "duels_won": 1.5603,
                "rating": 7.0,
                "minutes": 22.29,
                "total_long_balls": 1.2383,
                "accurate_long_balls": 0.743,
                "total_own_half_passes": 5.2011,
                "accurate_own_half_passes": 4.2104,
                "total_opp_half_passes": 4.9534,
                "accurate_opp_half_passes": 3.715,
                "crosses_total": 0.3467,
                "crosses_accurate": 0.1734,
                "touches": 16.8415,
                "possession_lost": 2.13,
                "dispossessed": 0.8,
                "duels_lost": 1.065,
                "aerial_won": 0.322,
                "aerial_lost": 1.0,
                "interceptions": 0.2724,
                "tackles_won": 0.3467,
                "tackles": 0.4706,
                "clearances": 0.1981,
                "total_contest": 1.0154,
                "won_contest": 0.5696,
                "challenges_lost": 1.1,
                "fouls": 0.3963,
                "fouls_drawn": 0.2724,
                "goals": 0.0173,
                "goal_rate": 0.0173,
                "shots_on_target": 0.1486,
                "shots_off_target": 0.1238,
                "blocks": 0.0743,
                "big_chances_created": 0.0272,
                "big_chances_missed": 0.0149,
                "xgot": 0.0154,
                "ball_carries": 7.6778,
                "total_progression": 20.0613,
                "progressive_carries": 1.7337,
                "bench_appearance_probability": 0.513,
                "bench_expected_minutes": 22.29
              },
              "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.4458,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_assists": 0.0357,
                "expected_goals": 0.0228,
                "total_shots": 0.3467,
                "total_pass": 13.1265,
                "accurate_pass": 10.6498,
                "ball_recovery": 1.3126,
                "duels_won": 1.5603,
                "rating": 7.0,
                "minutes": 22.29,
                "total_long_balls": 1.2383,
                "accurate_long_balls": 0.743,
                "total_own_half_passes": 5.2011,
                "accurate_own_half_passes": 4.2104,
                "total_opp_half_passes": 4.9534,
                "accurate_opp_half_passes": 3.715,
                "crosses_total": 0.3467,
                "crosses_accurate": 0.1734,
                "touches": 16.8415,
                "possession_lost": 2.13,
                "dispossessed": 0.8,
                "duels_lost": 1.065,
                "aerial_won": 0.322,
                "aerial_lost": 1.0,
                "interceptions": 0.2724,
                "tackles_won": 0.3467,
                "tackles": 0.4706,
                "clearances": 0.1981,
                "total_contest": 1.0154,
                "won_contest": 0.5696,
                "challenges_lost": 1.1,
                "fouls": 0.3963,
                "fouls_drawn": 0.2724,
                "goal_rate": 0.0173,
                "goals": 0,
                "shots_on_target": 0.1486,
                "shots_off_target": 0.1238,
                "blocks": 0.0743,
                "big_chances_created": 0.0272,
                "big_chances_missed": 0.0149,
                "xgot": 0.0154,
                "ball_carries": 7.6778,
                "total_progression": 20.0613,
                "progressive_carries": 1.7337,
                "bench_appearance_probability": 0.513,
                "bench_expected_minutes": 22.29,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.513,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 71.0)",
              "stats": {
                "key_pass": 0.4458,
                "assist_rate": 0.0297,
                "assists": 0,
                "expected_assists": 0.0357,
                "expected_goals": 0.0228,
                "total_shots": 0.3467,
                "total_pass": 13.1265,
                "accurate_pass": 10.6498,
                "ball_recovery": 1.3126,
                "duels_won": 1.5603,
                "rating": 7.0,
                "minutes": 22.29,
                "total_long_balls": 1.2383,
                "accurate_long_balls": 0.743,
                "total_own_half_passes": 5.2011,
                "accurate_own_half_passes": 4.2104,
                "total_opp_half_passes": 4.9534,
                "accurate_opp_half_passes": 3.715,
                "crosses_total": 0.3467,
                "crosses_accurate": 0.1734,
                "touches": 16.8415,
                "possession_lost": 2.13,
                "dispossessed": 0.8,
                "duels_lost": 1.065,
                "aerial_won": 0.322,
                "aerial_lost": 1.0,
                "interceptions": 0.2724,
                "tackles_won": 0.3467,
                "tackles": 0.4706,
                "clearances": 0.1981,
                "total_contest": 1.0154,
                "won_contest": 0.5696,
                "challenges_lost": 1.1,
                "fouls": 0.3963,
                "fouls_drawn": 0.2724,
                "goal_rate": 0.0173,
                "goals": 0,
                "shots_on_target": 0.1486,
                "shots_off_target": 0.1238,
                "blocks": 0.0743,
                "big_chances_created": 0.0272,
                "big_chances_missed": 0.0149,
                "xgot": 0.0154,
                "ball_carries": 7.6778,
                "total_progression": 20.0613,
                "progressive_carries": 1.7337,
                "bench_appearance_probability": 0.513,
                "bench_expected_minutes": 22.29,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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": 2,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4428,
                "fifa_rank": 4749.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            }
          ]
        },
        "Sidiki Cherif": {
          "player_id": 1514916,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 49,
          "height": 188,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.0684,
            "goal_rate": 0.1285,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0156,
            "key_pass": 0,
            "rating": 6.6085,
            "minutes": 26,
            "total_pass": 7,
            "accurate_pass": 7,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 20,
            "possession_lost": 6.2954,
            "dispossessed": 1.1362,
            "duels_lost": 8,
            "aerial_lost": 5,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.0922,
            "offsides": 1,
            "ball_carries": 4,
            "total_progression": 6,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.595,
            "bench_expected_minutes": 26.1,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0646,
            "projected_assists": 0,
            "assist_probability": 0.0154,
            "finishing_factor": 1.1629,
            "creation_factor": 0.8,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 60,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0211,
                "expected_assists": 0.0191,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 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": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 78,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3256,
                "expected_assists": 0.0028,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 9,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4195,
            "combined_rank_score": 2226.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4352.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6085,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sidiki Cherif",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gonzalo",
                  "ranking": 4190
                },
                {
                  "player_name": "José Sosa",
                  "ranking": 4191
                },
                {
                  "player_name": "Jason Knight",
                  "ranking": 4192
                },
                {
                  "player_name": "Pablo Marín",
                  "ranking": 4193
                },
                {
                  "player_name": "Yvan Neyou",
                  "ranking": 4194
                }
              ],
              "lower": [
                {
                  "player_name": "Miguel Rodríguez",
                  "ranking": 4196
                },
                {
                  "player_name": "Federico Navarro",
                  "ranking": 4197
                },
                {
                  "player_name": "Yukinari Sugawara",
                  "ranking": 4198
                },
                {
                  "player_name": "Patrick Pentz",
                  "ranking": 4199
                },
                {
                  "player_name": "Álex Sancris",
                  "ranking": 4200
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.09746860076133,
            "bench_appearance_prob": 0.5953394818527877,
            "market_value_adjustment": 1.0255,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 26.1 expected mins (appearance prob 0.60)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0902,
                "goals": 0.112,
                "goal_rate": 0.112,
                "shots_on_target": 0.266,
                "total_shots": 0.6966,
                "expected_assists": 0.0191,
                "key_pass": 0.2877,
                "rating": 6.6085,
                "minutes": 23.33,
                "total_pass": 6.4295,
                "accurate_pass": 5.7687,
                "duels_won": 2.7279,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8678,
                "accurate_opp_half_passes": 3.207,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.6948,
                "possession_lost": 5.4879,
                "dispossessed": 1.1079,
                "duels_lost": 6.6453,
                "aerial_lost": 4.8678,
                "total_contest": 0.6696,
                "won_contest": 0.3887,
                "ball_recovery": 1.4383,
                "challenges_lost": 0.0,
                "fouls": 0.3887,
                "fouls_drawn": 1.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6696,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3887,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5405,
                "xgot": 0.1216,
                "offsides": 0.6113,
                "ball_carries": 3.5462,
                "total_progression": 5.5377,
                "progressive_carries": 0.6608,
                "shots_off_target": 0.4305
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1158,
                  "totalOppositionHalfPasses": 3.8678,
                  "accurateOppositionHalfPasses": 3.207,
                  "accuratePass": 5.7687,
                  "totalShots": 1.38
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09019029140472412,
                    "model_output": 0.0902,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0926
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0112
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0072
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0052
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0012,
                      "total": 0.0902,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63122
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.112653
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.073788
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.053119
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.050694
                        }
                      ],
                      "others_margin": -0.012002
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.11202432960271835,
                    "model_output": 0.112,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0805
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.016
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0053
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0048
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": 0.001,
                      "total": 0.112,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.507589
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.140889
                        },
                        {
                          "name": "goals",
                          "margin": 0.048808
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.043948
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.043314
                        }
                      ],
                      "others_margin": 0.009248
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2660353481769562,
                    "model_output": 0.266,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2299
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0226
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0089
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0073
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0072
                        }
                      ],
                      "others": -0.0265,
                      "total": 0.266,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.559913
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.076651
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.030844
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.025364
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.025089
                        }
                      ],
                      "others_margin": -0.094868
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6965525150299072,
                    "model_output": 0.6966,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5544
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0615
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0403
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0387
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0353
                        }
                      ],
                      "others": -0.1051,
                      "total": 0.6966,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.554399
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.061501
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.040308
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.038675
                        },
                        {
                          "name": "goals",
                          "margin": 0.035276
                        }
                      ],
                      "others_margin": -0.105206
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.019091308116912842,
                    "model_output": 0.0191,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0174
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0108
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0061
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0025
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0067,
                      "total": 0.0191,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.314731
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.261138
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.183005
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.085875
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.066909
                        }
                      ],
                      "others_margin": -0.3049
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.28771284222602844,
                    "model_output": 0.2877,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2366
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0349
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.031
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0229
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0164
                        }
                      ],
                      "others": -0.051,
                      "total": 0.2877,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.427162
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.081867
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.078759
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.062623
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.047371
                        }
                      ],
                      "others_margin": -0.163024
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6085052490234375,
                    "model_output": 6.6085,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0625
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0139
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0113
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0109
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.01
                        }
                      ],
                      "others": -0.1008,
                      "total": 6.6085,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.062479
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.013885
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011349
                        },
                        {
                          "name": "rating",
                          "margin": 0.010906
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.009996
                        }
                      ],
                      "others_margin": -0.10074
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "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.0255, quality 0.641)",
              "stats": {
                "expected_goals": 0.0925,
                "goals": 0.1149,
                "goal_rate": 0.1149,
                "shots_on_target": 0.2728,
                "total_shots": 0.7143,
                "expected_assists": 0.0196,
                "key_pass": 0.295,
                "rating": 6.6085,
                "minutes": 23.33,
                "total_pass": 6.5935,
                "accurate_pass": 5.9158,
                "duels_won": 2.7975,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.9664,
                "accurate_opp_half_passes": 3.2888,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.146,
                "possession_lost": 5.6278,
                "dispossessed": 1.1362,
                "duels_lost": 6.8148,
                "aerial_lost": 4.9919,
                "total_contest": 0.6867,
                "won_contest": 0.3986,
                "ball_recovery": 1.475,
                "challenges_lost": 0.0,
                "fouls": 0.3986,
                "fouls_drawn": 1.0255,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6867,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3986,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5543,
                "xgot": 0.1247,
                "offsides": 0.6269,
                "ball_carries": 3.6366,
                "total_progression": 5.6789,
                "progressive_carries": 0.6777,
                "shots_off_target": 0.4415
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0255,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.3 to 26.1 expected minutes (appearance prob 0.60)",
              "stats": {
                "expected_goals": 0.1035,
                "goals": 0.1285,
                "goal_rate": 0.1285,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0219,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.1395,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "expected_minutes": 26.1,
                "projection_minutes": 23.33,
                "minutes_scale": 1.1186,
                "appearance_probability": 0.595
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1035,
                "goals": 0.1285,
                "goal_rate": 0.1285,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0219,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.1395,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1035,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0219,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.1395,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.1629,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 0.595
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1035,
                  "after": 0.0684
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0219,
                  "after": 0.0156
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.1629,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4195,
                "fifa_rank": 4352.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.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.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0646,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1629,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0646,
                "goal_rate": 0.1285,
                "scorer_weight": 0.0795,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0652,
                "finishing_factor": 1.1629,
                "appearance_weight": 0.595,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0646,
                "projected_assists": 0,
                "assist_probability": 0.0154,
                "finishing_factor": 1.1629,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0154,
                "assist_rate": 0.0,
                "provider_weight": 0.0125,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0169,
                "creation_factor": 0.8,
                "appearance_weight": 0.595,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Loum Tchaouna": {
          "player_id": 1004505,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 180,
          "market_value": 19200000,
          "stats": {
            "expected_goals": 0.0654,
            "goal_rate": 0.0877,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0467,
            "key_pass": 0,
            "rating": 6.6359,
            "minutes": 26,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 13,
            "possession_lost": 4.4345,
            "dispossessed": 0.3358,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0902,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 4,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.349,
            "bench_expected_minutes": 26.03,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "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": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363869,
              "match_date": "2026-09-19",
              "home_team": "Nottingham Forest",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0409,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 4,
                "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": 16363263,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.101,
                "expected_assists": 0.0298,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "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": "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": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 59,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0544,
                "expected_assists": 0.1343,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0405,
                "expected_assists": 0.0218,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 22,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023960,
              "match_date": "2026-05-24",
              "home_team": "Burnley",
              "away_team": "Wolverhampton",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 75,
                "rating": 6.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0166,
                "expected_assists": 0.042,
                "total_shots": 1,
                "total_pass": 28,
                "accurate_pass": 24,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023950,
              "match_date": "2026-05-18",
              "home_team": "Arsenal",
              "away_team": "Burnley",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 82,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0391,
                "expected_assists": 0.0246,
                "total_shots": 1,
                "total_pass": 13,
                "accurate_pass": 8,
                "key_pass": 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": 14023929,
              "match_date": "2026-05-10",
              "home_team": "Burnley",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0442,
                "expected_assists": 0.0983,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 16,
                "accurate_pass": 12,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023940,
              "match_date": "2026-05-01",
              "home_team": "Leeds United",
              "away_team": "Burnley",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2026,
                "expected_assists": 0.0556,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 14,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024003,
              "match_date": "2026-04-22",
              "home_team": "Burnley",
              "away_team": "Manchester City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Burnley",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 72,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0096,
                "expected_assists": 0.0124,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 12,
                "key_pass": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025041,
              "match_date": "2026-04-19",
              "home_team": "Nottingham Forest",
              "away_team": "Burnley",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Burnley",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 16,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0037,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 4005,
            "combined_rank_score": 1987.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3276.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6359,
            "source_file": "data/player_rankings.csv",
            "player_name": "Loum Tchaouna",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Turrientes",
                  "ranking": 4000
                },
                {
                  "player_name": "Agirrezabala",
                  "ranking": 4001
                },
                {
                  "player_name": "Enzo Bardeli",
                  "ranking": 4002
                },
                {
                  "player_name": "Andrés García",
                  "ranking": 4003
                },
                {
                  "player_name": "Antoni Milambo",
                  "ranking": 4004
                }
              ],
              "lower": [
                {
                  "player_name": "Marco Grüll",
                  "ranking": 4006
                },
                {
                  "player_name": "Soungoutou Magassa",
                  "ranking": 4007
                },
                {
                  "player_name": "Mikel Amondarain",
                  "ranking": 4008
                },
                {
                  "player_name": "Gustavo Velázquez",
                  "ranking": 4009
                },
                {
                  "player_name": "Vicente Pizarro",
                  "ranking": 4010
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.765,
          "history_matches": 33,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 33,
            "data_confidence": 0.765,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.027562348292584,
            "bench_appearance_prob": 0.349,
            "market_value_adjustment": 1.0047,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "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.1
            },
            "rationale": "Bench projection scaled from XGBoost F_service (33 historical appearances) to 26.0 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.0605,
                "goals": 0.0818,
                "goal_rate": 0.0818,
                "shots_on_target": 0.2402,
                "total_shots": 0.694,
                "expected_assists": 0.0432,
                "key_pass": 0.3948,
                "rating": 6.6359,
                "minutes": 24.17,
                "total_pass": 6.8168,
                "accurate_pass": 5.3584,
                "duels_won": 0.769,
                "total_long_balls": 0.3682,
                "accurate_long_balls": 0.2053,
                "total_opp_half_passes": 4.8928,
                "accurate_opp_half_passes": 3.6248,
                "crosses_total": 1.2019,
                "crosses_accurate": 0.2815,
                "touches": 12.3832,
                "possession_lost": 4.0987,
                "dispossessed": 0.3342,
                "duels_lost": 1.7281,
                "aerial_lost": 0.4325,
                "total_contest": 0.674,
                "won_contest": 0.2418,
                "ball_recovery": 0.7148,
                "challenges_lost": 0.5292,
                "fouls": 0.0,
                "fouls_drawn": 0.3324,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0194,
                "tackles_won": 0.0392,
                "tackles": 0.1024,
                "clearances": 0.0655,
                "blocks": 0.1601,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0834,
                "offsides": 0.1601,
                "ball_carries": 2.2496,
                "total_progression": 3.8857,
                "progressive_carries": 0.343,
                "shots_off_target": 0.4538
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1507,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1281,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.1089,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Wolverhampton",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-18",
                    "opponent": "Arsenal",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-01",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-04-22",
                    "opponent": "Manchester City",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-19",
                    "opponent": "Nottingham Forest",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0527,
                  "totalOppositionHalfPasses": 9.8407,
                  "accurateOppositionHalfPasses": 7.3201,
                  "accuratePass": 11.065,
                  "totalShots": 1.2092
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.060455821454524994,
                    "model_output": 0.0605,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0883
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0198
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0047
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0137,
                      "total": 0.0605,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.59061
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.199381
                        },
                        {
                          "name": "goals",
                          "margin": -0.085383
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.058072
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.045679
                        }
                      ],
                      "others_margin": -0.206784
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08176375180482864,
                    "model_output": 0.0818,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0796
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0118
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0078
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0062
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0127,
                      "total": 0.0818,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.499799
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.101204
                        },
                        {
                          "name": "goals",
                          "margin": -0.072988
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.062153
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.024716
                        }
                      ],
                      "others_margin": -0.145079
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.24021558463573456,
                    "model_output": 0.2402,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1964
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0242
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0186
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0142
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0125
                        }
                      ],
                      "others": -0.0301,
                      "total": 0.2402,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.456081
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.073768
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.060609
                        },
                        {
                          "name": "goals",
                          "margin": -0.049107
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.045041
                        }
                      ],
                      "others_margin": -0.11835
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6939674615859985,
                    "model_output": 0.694,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4514
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0916
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0544
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0254
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0211
                        }
                      ],
                      "others": -0.085,
                      "total": 0.694,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.451435
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.091589
                        },
                        {
                          "name": "goals",
                          "margin": -0.054403
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.025377
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.021124
                        }
                      ],
                      "others_margin": -0.085101
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.043171003460884094,
                    "model_output": 0.0432,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.019
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0041
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0026
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.002
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0018
                        }
                      ],
                      "others": 0.0043,
                      "total": 0.0432,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.34822
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.0948
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.065728
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.049809
                        },
                        {
                          "name": "rating",
                          "margin": -0.044461
                        }
                      ],
                      "others_margin": 0.102778
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.394815593957901,
                    "model_output": 0.3948,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2445
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0237
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.022
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0138
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0134
                        }
                      ],
                      "others": 0.0049,
                      "total": 0.3948,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.445215
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.055819
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.054829
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.035871
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.035015
                        }
                      ],
                      "others_margin": 0.01237
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.635948657989502,
                    "model_output": 6.6359,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0571
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0242
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.013
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0109
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0067
                        }
                      ],
                      "others": -0.0465,
                      "total": 6.6359,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.05714
                        },
                        {
                          "name": "rating",
                          "margin": -0.02417
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.01298
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010864
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.006686
                        }
                      ],
                      "others_margin": -0.046452
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 33,
                  "role_matches": 17,
                  "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.0047, quality 0.623)",
              "stats": {
                "expected_goals": 0.0607,
                "goals": 0.0821,
                "goal_rate": 0.0821,
                "shots_on_target": 0.2413,
                "total_shots": 0.6973,
                "expected_assists": 0.0434,
                "key_pass": 0.3967,
                "rating": 6.6359,
                "minutes": 24.17,
                "total_pass": 6.8488,
                "accurate_pass": 5.3836,
                "duels_won": 0.7726,
                "total_long_balls": 0.3699,
                "accurate_long_balls": 0.2063,
                "total_opp_half_passes": 4.9158,
                "accurate_opp_half_passes": 3.6418,
                "crosses_total": 1.2075,
                "crosses_accurate": 0.2828,
                "touches": 12.4414,
                "possession_lost": 4.118,
                "dispossessed": 0.3358,
                "duels_lost": 1.7362,
                "aerial_lost": 0.4345,
                "total_contest": 0.6772,
                "won_contest": 0.2429,
                "ball_recovery": 0.7182,
                "challenges_lost": 0.5317,
                "fouls": 0.0,
                "fouls_drawn": 0.334,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0195,
                "tackles_won": 0.0394,
                "tackles": 0.1029,
                "clearances": 0.0658,
                "blocks": 0.1609,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0838,
                "offsides": 0.1609,
                "ball_carries": 2.2602,
                "total_progression": 3.904,
                "progressive_carries": 0.3446,
                "shots_off_target": 0.4559
              },
              "params": {
                "market_value_eur": 19200000,
                "quality_factor": 0.6231,
                "boost_factor": 1.0047,
                "reference_quality": 0.505,
                "history_matches": 33,
                "history_shrink": 0.1316,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0086)",
              "stats": {
                "expected_goals": 0.0607,
                "goals": 0.0814,
                "goal_rate": 0.0814,
                "shots_on_target": 0.2392,
                "total_shots": 0.6958,
                "expected_assists": 0.0434,
                "key_pass": 0.3967,
                "rating": 6.6359,
                "minutes": 24.17,
                "total_pass": 6.8488,
                "accurate_pass": 5.3836,
                "duels_won": 0.7726,
                "total_long_balls": 0.3699,
                "accurate_long_balls": 0.2063,
                "total_opp_half_passes": 4.9158,
                "accurate_opp_half_passes": 3.6418,
                "crosses_total": 1.2079,
                "crosses_accurate": 0.2828,
                "touches": 12.4414,
                "possession_lost": 4.118,
                "dispossessed": 0.3358,
                "duels_lost": 1.7362,
                "aerial_lost": 0.4345,
                "total_contest": 0.6772,
                "won_contest": 0.2429,
                "ball_recovery": 0.7182,
                "challenges_lost": 0.5317,
                "fouls": 0.0015,
                "fouls_drawn": 0.3342,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0193,
                "tackles_won": 0.0406,
                "tackles": 0.1029,
                "clearances": 0.0658,
                "blocks": 0.1609,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0838,
                "offsides": 0.1595,
                "ball_carries": 2.2602,
                "total_progression": 3.904,
                "progressive_carries": 0.3446,
                "shots_off_target": 0.4559
              },
              "params": {
                "blend_weight": 0.0086,
                "history_matches": 33,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2686,
                "prior_reliability": 0.1,
                "competition": "Premier League",
                "squad": "Coventry City"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 24.2 to 26.0 expected minutes (appearance prob 0.35)",
              "stats": {
                "expected_goals": 0.0654,
                "goals": 0.0877,
                "goal_rate": 0.0877,
                "shots_on_target": 0.2576,
                "total_shots": 0.7493,
                "expected_assists": 0.0467,
                "key_pass": 0.4272,
                "rating": 6.6359,
                "minutes": 26.03,
                "total_pass": 7.3752,
                "accurate_pass": 5.7974,
                "duels_won": 0.832,
                "total_long_balls": 0.3983,
                "accurate_long_balls": 0.2222,
                "total_opp_half_passes": 5.2936,
                "accurate_opp_half_passes": 3.9217,
                "crosses_total": 1.3007,
                "crosses_accurate": 0.3045,
                "touches": 13.3976,
                "possession_lost": 4.4345,
                "dispossessed": 0.3358,
                "duels_lost": 1.8696,
                "aerial_lost": 0.4345,
                "total_contest": 0.7292,
                "won_contest": 0.2616,
                "ball_recovery": 0.7734,
                "challenges_lost": 0.5317,
                "fouls": 0.0016,
                "fouls_drawn": 0.3599,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0208,
                "tackles_won": 0.0437,
                "tackles": 0.1108,
                "clearances": 0.0709,
                "blocks": 0.1733,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0902,
                "offsides": 0.1595,
                "ball_carries": 2.4339,
                "total_progression": 4.204,
                "progressive_carries": 0.3711,
                "shots_off_target": 0.4909,
                "bench_appearance_probability": 0.349,
                "bench_expected_minutes": 26.03
              },
              "params": {
                "expected_minutes": 26.03,
                "projection_minutes": 24.17,
                "minutes_scale": 1.0769,
                "appearance_probability": 0.349
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0654,
                "goals": 0.0877,
                "goal_rate": 0.0877,
                "shots_on_target": 0.2576,
                "total_shots": 0.7493,
                "expected_assists": 0.0467,
                "key_pass": 0.4272,
                "rating": 6.6359,
                "minutes": 26.03,
                "total_pass": 7.3752,
                "accurate_pass": 5.7974,
                "duels_won": 0.832,
                "total_long_balls": 0.3983,
                "accurate_long_balls": 0.2222,
                "total_opp_half_passes": 5.2936,
                "accurate_opp_half_passes": 3.9217,
                "crosses_total": 1.3007,
                "crosses_accurate": 0.3045,
                "touches": 13.3976,
                "possession_lost": 4.4345,
                "dispossessed": 0.3358,
                "duels_lost": 1.8696,
                "aerial_lost": 0.4345,
                "total_contest": 0.7292,
                "won_contest": 0.2616,
                "ball_recovery": 0.7734,
                "challenges_lost": 0.5317,
                "fouls": 0.0016,
                "fouls_drawn": 0.3599,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0208,
                "tackles_won": 0.0437,
                "tackles": 0.1108,
                "clearances": 0.0709,
                "blocks": 0.1733,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0902,
                "offsides": 0.1595,
                "ball_carries": 2.4339,
                "total_progression": 4.204,
                "progressive_carries": 0.3711,
                "shots_off_target": 0.4909,
                "bench_appearance_probability": 0.349,
                "bench_expected_minutes": 26.03
              },
              "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.0654,
                "goal_rate": 0.0877,
                "goals": 0,
                "shots_on_target": 0.2576,
                "total_shots": 0.7493,
                "expected_assists": 0.0467,
                "key_pass": 0.4272,
                "rating": 6.6359,
                "minutes": 26.03,
                "total_pass": 7.3752,
                "accurate_pass": 5.7974,
                "duels_won": 0.832,
                "total_long_balls": 0.3983,
                "accurate_long_balls": 0.2222,
                "total_opp_half_passes": 5.2936,
                "accurate_opp_half_passes": 3.9217,
                "crosses_total": 1.3007,
                "crosses_accurate": 0.3045,
                "touches": 13.3976,
                "possession_lost": 4.4345,
                "dispossessed": 0.3358,
                "duels_lost": 1.8696,
                "aerial_lost": 0.4345,
                "total_contest": 0.7292,
                "won_contest": 0.2616,
                "ball_recovery": 0.7734,
                "challenges_lost": 0.5317,
                "fouls": 0.0016,
                "fouls_drawn": 0.3599,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0208,
                "tackles_won": 0.0437,
                "tackles": 0.1108,
                "clearances": 0.0709,
                "blocks": 0.1733,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0902,
                "offsides": 0.1595,
                "ball_carries": 2.4339,
                "total_progression": 4.204,
                "progressive_carries": 0.3711,
                "shots_off_target": 0.4909,
                "bench_appearance_probability": 0.349,
                "bench_expected_minutes": 26.03,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.349,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 73.0)",
              "stats": {
                "expected_goals": 0.0654,
                "goal_rate": 0.0877,
                "goals": 0,
                "shots_on_target": 0.2576,
                "total_shots": 0.7493,
                "expected_assists": 0.0467,
                "key_pass": 0.4272,
                "rating": 6.6359,
                "minutes": 26.03,
                "total_pass": 7.3752,
                "accurate_pass": 5.7974,
                "duels_won": 0.832,
                "total_long_balls": 0.3983,
                "accurate_long_balls": 0.2222,
                "total_opp_half_passes": 5.2936,
                "accurate_opp_half_passes": 3.9217,
                "crosses_total": 1.3007,
                "crosses_accurate": 0.3045,
                "touches": 13.3976,
                "possession_lost": 4.4345,
                "dispossessed": 0.3358,
                "duels_lost": 1.8696,
                "aerial_lost": 0.4345,
                "total_contest": 0.7292,
                "won_contest": 0.2616,
                "ball_recovery": 0.7734,
                "challenges_lost": 0.5317,
                "fouls": 0.0016,
                "fouls_drawn": 0.3599,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0208,
                "tackles_won": 0.0437,
                "tackles": 0.1108,
                "clearances": 0.0709,
                "blocks": 0.1733,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0902,
                "offsides": 0.1595,
                "ball_carries": 2.4339,
                "total_progression": 4.204,
                "progressive_carries": 0.3711,
                "shots_off_target": 0.4909,
                "bench_appearance_probability": 0.349,
                "bench_expected_minutes": 26.03,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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": 73.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4005,
                "fifa_rank": 3276.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            }
          ]
        }
      },
      "substitutes": {
        "Victor Torp": {
          "player_id": 837011,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 178,
          "market_value": 14500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0382,
            "assist_rate": 0.0523,
            "assists": 0,
            "expected_goals": 0.0277,
            "goal_rate": 0.0538,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.659,
            "minutes": 24,
            "total_pass": 10,
            "accurate_pass": 8,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 7,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 14,
            "possession_lost": 3.4534,
            "dispossessed": 0.1949,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 0,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.703,
            "bench_expected_minutes": 23.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0272,
            "projected_assists": 0,
            "assist_probability": 0.0372,
            "finishing_factor": 1.2155,
            "creation_factor": 1.0712,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 12,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1291,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "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"
            },
            {
              "match_id": 16363250,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 19,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0053,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 11,
                "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": 16363633,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 28,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1114,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4103,
            "combined_rank_score": 2091.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 915.0,
            "sofascore_rating": 6.5,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3267.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.659,
            "source_file": "data/player_rankings.csv",
            "player_name": "Victor Torp",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Adam Smith",
                  "ranking": 4098
                },
                {
                  "player_name": "Dayne St. Clair",
                  "ranking": 4099
                },
                {
                  "player_name": "Kieffer Moore",
                  "ranking": 4100
                },
                {
                  "player_name": "Ryan Giles",
                  "ranking": 4101
                },
                {
                  "player_name": "Alex Tóth",
                  "ranking": 4102
                }
              ],
              "lower": [
                {
                  "player_name": "Dro Fernández",
                  "ranking": 4104
                },
                {
                  "player_name": "Agustín Sández",
                  "ranking": 4105
                },
                {
                  "player_name": "Axel Tuanzebe",
                  "ranking": 4106
                },
                {
                  "player_name": "Abdoul Ouattara",
                  "ranking": 4107
                },
                {
                  "player_name": "Liam Millar",
                  "ranking": 4108
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.505,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.505,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.88,
            "bench_appearance_prob": 0.703,
            "market_value_adjustment": 1.0115,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 25.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost M_service (4 historical appearances) to 23.9 expected mins (appearance prob 0.70); FBref playing time empirical prior: 2.0 sub appearances, 25.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4448,
                "expected_assists": 0.0332,
                "assists": 0.0387,
                "assist_rate": 0.0387,
                "expected_goals": 0.0258,
                "goals": 0.0398,
                "goal_rate": 0.0398,
                "shots_on_target": 0.1146,
                "total_shots": 0.2854,
                "rating": 6.659,
                "minutes": 17.62,
                "total_pass": 7.1474,
                "accurate_pass": 6.1874,
                "duels_won": 0.0,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.9129,
                "accurate_own_half_passes": 1.3724,
                "total_opp_half_passes": 5.2345,
                "accurate_opp_half_passes": 4.8151,
                "crosses_total": 1.4194,
                "crosses_accurate": 0.5065,
                "touches": 10.2447,
                "possession_lost": 2.5191,
                "dispossessed": 0.1927,
                "duels_lost": 0.6462,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1927,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2267,
                "fouls": 0.2267,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1927,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.9845,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1708
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.2667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.2267,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1927,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.2407,
                  "totalShots": 0.0,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.0635,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.4448159337043762,
                    "model_output": 0.4448,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4005
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0387
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0319
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0184
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0165
                        }
                      ],
                      "others": -0.0135,
                      "total": 0.4448,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.593663
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.081666
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.072597
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.042643
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.036595
                        }
                      ],
                      "others_margin": -0.029901
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0331689678132534,
                    "model_output": 0.0332,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0408
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0041
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0029
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0021
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.0332,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.643418
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.096083
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.074639
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.052944
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.046812
                        }
                      ],
                      "others_margin": -0.143412
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03865394741296768,
                    "model_output": 0.0387,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0227
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0114
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0061
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0044
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0096,
                      "total": 0.0387,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.300408
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.194032
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.121161
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.089757
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.065548
                        }
                      ],
                      "others_margin": -0.224452
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.025813313201069832,
                    "model_output": 0.0258,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.043
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.007
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0021
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0014,
                      "total": 0.0258,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.612401
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.409662
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.232298
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.074474
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.066042
                        }
                      ],
                      "others_margin": -0.046017
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03976423293352127,
                    "model_output": 0.0398,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0411
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0119
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0029
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.002
                        }
                      ],
                      "others": 0.0016,
                      "total": 0.0398,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.534042
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.228452
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.167807
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.075779
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.054878
                        }
                      ],
                      "others_margin": 0.03586
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.11455610394477844,
                    "model_output": 0.1146,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1423
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0523
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0233
                        },
                        {
                          "name": "cross_accuracy",
                          "contribution": 0.0049
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0048
                        }
                      ],
                      "others": 0.0064,
                      "total": 0.1146,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.573518
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.335327
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.195143
                        },
                        {
                          "name": "cross_accuracy",
                          "margin": 0.044311
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.04296
                        }
                      ],
                      "others_margin": 0.056721
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.28536364436149597,
                    "model_output": 0.2854,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3777
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2651
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0334
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.03
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0254
                        }
                      ],
                      "others": -0.0307,
                      "total": 0.2854,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.377676
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.265068
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.033403
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.030015
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.025418
                        }
                      ],
                      "others_margin": -0.030789
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.658990383148193,
                    "model_output": 6.659,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0588
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.048
                        },
                        {
                          "name": "rating",
                          "contribution": -0.039
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0098
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0096
                        }
                      ],
                      "others": -0.0319,
                      "total": 6.659,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.058831
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.047977
                        },
                        {
                          "name": "rating",
                          "margin": -0.038975
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.009785
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.009594
                        }
                      ],
                      "others_margin": -0.031899
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "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.0115, quality 0.574)",
              "stats": {
                "key_pass": 0.4499,
                "expected_assists": 0.0336,
                "assists": 0.0391,
                "assist_rate": 0.0391,
                "expected_goals": 0.0261,
                "goals": 0.0402,
                "goal_rate": 0.0402,
                "shots_on_target": 0.1159,
                "total_shots": 0.2887,
                "rating": 6.659,
                "minutes": 17.62,
                "total_pass": 7.2296,
                "accurate_pass": 6.2586,
                "duels_won": 0.0,
                "total_long_balls": 0.2293,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.9349,
                "accurate_own_half_passes": 1.3882,
                "total_opp_half_passes": 5.2947,
                "accurate_opp_half_passes": 4.8705,
                "crosses_total": 1.4357,
                "crosses_accurate": 0.5123,
                "touches": 10.3625,
                "possession_lost": 2.5481,
                "dispossessed": 0.1949,
                "duels_lost": 0.6536,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1949,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.2293,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1949,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.0073,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1728
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0115,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0120)",
              "stats": {
                "key_pass": 0.4499,
                "expected_assists": 0.0336,
                "assists": 0.0386,
                "assist_rate": 0.0386,
                "expected_goals": 0.0261,
                "goals": 0.0397,
                "goal_rate": 0.0397,
                "shots_on_target": 0.1145,
                "total_shots": 0.2852,
                "rating": 6.659,
                "minutes": 17.62,
                "total_pass": 7.2296,
                "accurate_pass": 6.2586,
                "duels_won": 0.0,
                "total_long_balls": 0.2293,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 1.9349,
                "accurate_own_half_passes": 1.3882,
                "total_opp_half_passes": 5.2947,
                "accurate_opp_half_passes": 4.8705,
                "crosses_total": 1.4373,
                "crosses_accurate": 0.5123,
                "touches": 10.3625,
                "possession_lost": 2.5481,
                "dispossessed": 0.1949,
                "duels_lost": 0.6536,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.1973,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.2313,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.1949,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.0073,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.1728
              },
              "params": {
                "blend_weight": 0.012,
                "history_matches": 4,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1958,
                "prior_reliability": 0.0333,
                "competition": "Premier League",
                "squad": "Coventry City"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.6 to 23.9 expected minutes (appearance prob 0.70)",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0455,
                "assists": 0.0523,
                "assist_rate": 0.0523,
                "expected_goals": 0.0354,
                "goals": 0.0538,
                "goal_rate": 0.0538,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "expected_minutes": 23.88,
                "projection_minutes": 17.62,
                "minutes_scale": 1.3553,
                "appearance_probability": 0.703
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0455,
                "assists": 0.0523,
                "assist_rate": 0.0523,
                "expected_goals": 0.0354,
                "goals": 0.0538,
                "goal_rate": 0.0538,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0455,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0354,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.2155,
                "creation_factor": 1.0712
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 0.703
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0354,
                  "after": 0.0277
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0455,
                  "after": 0.0382
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.2155,
                "creation_factor": 1.0712,
                "fifa_overall": 73.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": 4103,
                "fifa_rank": 3267.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.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0272,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2155,
                "creation_factor": 1.0712,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0272,
                "goal_rate": 0.0538,
                "scorer_weight": 0.0337,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0276,
                "finishing_factor": 1.2155,
                "appearance_weight": 0.703,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.6097,
                "expected_assists": 0.0382,
                "assist_rate": 0.0523,
                "assists": 0,
                "expected_goals": 0.0277,
                "goal_rate": 0.0538,
                "goals": 0,
                "shots_on_target": 0.1552,
                "total_shots": 0.3894,
                "rating": 6.659,
                "minutes": 23.88,
                "total_pass": 9.7981,
                "accurate_pass": 8.4821,
                "duels_won": 0.0,
                "total_long_balls": 0.3108,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 2.6223,
                "accurate_own_half_passes": 1.8814,
                "total_opp_half_passes": 7.1758,
                "accurate_opp_half_passes": 6.6009,
                "crosses_total": 1.9479,
                "crosses_accurate": 0.6943,
                "touches": 14.0441,
                "possession_lost": 3.4534,
                "dispossessed": 0.1949,
                "duels_lost": 0.8858,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.2674,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.2293,
                "fouls": 0.3135,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.2641,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.7204,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "shots_off_target": 0.2342,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0272,
                "projected_assists": 0,
                "assist_probability": 0.0372,
                "finishing_factor": 1.2155,
                "creation_factor": 1.0712,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0372,
                "assist_rate": 0.0523,
                "provider_weight": 0.0409,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0553,
                "creation_factor": 1.0712,
                "appearance_weight": 0.703,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Sidiki Cherif": {
          "player_id": 1514916,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 49,
          "height": 188,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.0684,
            "goal_rate": 0.1285,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0156,
            "key_pass": 0,
            "rating": 6.6085,
            "minutes": 26,
            "total_pass": 7,
            "accurate_pass": 7,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 20,
            "possession_lost": 6.2954,
            "dispossessed": 1.1362,
            "duels_lost": 8,
            "aerial_lost": 5,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.0922,
            "offsides": 1,
            "ball_carries": 4,
            "total_progression": 6,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.595,
            "bench_expected_minutes": 26.1,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.485,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0646,
            "projected_assists": 0,
            "assist_probability": 0.0154,
            "finishing_factor": 1.1629,
            "creation_factor": 0.8,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16363890,
              "match_date": "2026-10-19",
              "home_team": "Tottenham Hotspur",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 60,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0211,
                "expected_assists": 0.0191,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 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": 16363874,
              "match_date": "2026-10-12",
              "home_team": "Coventry City",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 78,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3256,
                "expected_assists": 0.0028,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 9,
                "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": 16363642,
              "match_date": "2026-09-13",
              "home_team": "Coventry City",
              "away_team": "Brighton & Hove Albion",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Brighton & Hove Albion",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4195,
            "combined_rank_score": 2226.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4352.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6085,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sidiki Cherif",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gonzalo",
                  "ranking": 4190
                },
                {
                  "player_name": "José Sosa",
                  "ranking": 4191
                },
                {
                  "player_name": "Jason Knight",
                  "ranking": 4192
                },
                {
                  "player_name": "Pablo Marín",
                  "ranking": 4193
                },
                {
                  "player_name": "Yvan Neyou",
                  "ranking": 4194
                }
              ],
              "lower": [
                {
                  "player_name": "Miguel Rodríguez",
                  "ranking": 4196
                },
                {
                  "player_name": "Federico Navarro",
                  "ranking": 4197
                },
                {
                  "player_name": "Yukinari Sugawara",
                  "ranking": 4198
                },
                {
                  "player_name": "Patrick Pentz",
                  "ranking": 4199
                },
                {
                  "player_name": "Álex Sancris",
                  "ranking": 4200
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 26.09746860076133,
            "bench_appearance_prob": 0.5953394818527877,
            "market_value_adjustment": 1.0255,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 26.1 expected mins (appearance prob 0.60)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0902,
                "goals": 0.112,
                "goal_rate": 0.112,
                "shots_on_target": 0.266,
                "total_shots": 0.6966,
                "expected_assists": 0.0191,
                "key_pass": 0.2877,
                "rating": 6.6085,
                "minutes": 23.33,
                "total_pass": 6.4295,
                "accurate_pass": 5.7687,
                "duels_won": 2.7279,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.8678,
                "accurate_opp_half_passes": 3.207,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 17.6948,
                "possession_lost": 5.4879,
                "dispossessed": 1.1079,
                "duels_lost": 6.6453,
                "aerial_lost": 4.8678,
                "total_contest": 0.6696,
                "won_contest": 0.3887,
                "ball_recovery": 1.4383,
                "challenges_lost": 0.0,
                "fouls": 0.3887,
                "fouls_drawn": 1.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6696,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3887,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5405,
                "xgot": 0.1216,
                "offsides": 0.6113,
                "ball_carries": 3.5462,
                "total_progression": 5.5377,
                "progressive_carries": 0.6608,
                "shots_off_target": 0.4305
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-19",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-12",
                    "opponent": "Newcastle United",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-13",
                    "opponent": "Brighton & Hove Albion",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1158,
                  "totalOppositionHalfPasses": 3.8678,
                  "accurateOppositionHalfPasses": 3.207,
                  "accuratePass": 5.7687,
                  "totalShots": 1.38
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09019029140472412,
                    "model_output": 0.0902,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0926
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0112
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0072
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0052
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.0012,
                      "total": 0.0902,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63122
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.112653
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.073788
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.053119
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.050694
                        }
                      ],
                      "others_margin": -0.012002
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.11202432960271835,
                    "model_output": 0.112,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0805
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.016
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0053
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0048
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": 0.001,
                      "total": 0.112,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.507589
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.140889
                        },
                        {
                          "name": "goals",
                          "margin": 0.048808
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.043948
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.043314
                        }
                      ],
                      "others_margin": 0.009248
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2660353481769562,
                    "model_output": 0.266,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2299
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0226
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0089
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0073
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0072
                        }
                      ],
                      "others": -0.0265,
                      "total": 0.266,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.559913
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.076651
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.030844
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.025364
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.025089
                        }
                      ],
                      "others_margin": -0.094868
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6965525150299072,
                    "model_output": 0.6966,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5544
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0615
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0403
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0387
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0353
                        }
                      ],
                      "others": -0.1051,
                      "total": 0.6966,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.554399
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.061501
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.040308
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.038675
                        },
                        {
                          "name": "goals",
                          "margin": 0.035276
                        }
                      ],
                      "others_margin": -0.105206
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.019091308116912842,
                    "model_output": 0.0191,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0174
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0108
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0061
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0025
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0067,
                      "total": 0.0191,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.314731
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.261138
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.183005
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.085875
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.066909
                        }
                      ],
                      "others_margin": -0.3049
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.28771284222602844,
                    "model_output": 0.2877,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2366
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0349
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.031
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0229
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0164
                        }
                      ],
                      "others": -0.051,
                      "total": 0.2877,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.427162
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.081867
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.078759
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.062623
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.047371
                        }
                      ],
                      "others_margin": -0.163024
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6085052490234375,
                    "model_output": 6.6085,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0625
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0139
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0113
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0109
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.01
                        }
                      ],
                      "others": -0.1008,
                      "total": 6.6085,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.062479
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.013885
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011349
                        },
                        {
                          "name": "rating",
                          "margin": 0.010906
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.009996
                        }
                      ],
                      "others_margin": -0.10074
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "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.0255, quality 0.641)",
              "stats": {
                "expected_goals": 0.0925,
                "goals": 0.1149,
                "goal_rate": 0.1149,
                "shots_on_target": 0.2728,
                "total_shots": 0.7143,
                "expected_assists": 0.0196,
                "key_pass": 0.295,
                "rating": 6.6085,
                "minutes": 23.33,
                "total_pass": 6.5935,
                "accurate_pass": 5.9158,
                "duels_won": 2.7975,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 3.9664,
                "accurate_opp_half_passes": 3.2888,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.146,
                "possession_lost": 5.6278,
                "dispossessed": 1.1362,
                "duels_lost": 6.8148,
                "aerial_lost": 4.9919,
                "total_contest": 0.6867,
                "won_contest": 0.3986,
                "ball_recovery": 1.475,
                "challenges_lost": 0.0,
                "fouls": 0.3986,
                "fouls_drawn": 1.0255,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6867,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3986,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5543,
                "xgot": 0.1247,
                "offsides": 0.6269,
                "ball_carries": 3.6366,
                "total_progression": 5.6789,
                "progressive_carries": 0.6777,
                "shots_off_target": 0.4415
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0255,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.3 to 26.1 expected minutes (appearance prob 0.60)",
              "stats": {
                "expected_goals": 0.1035,
                "goals": 0.1285,
                "goal_rate": 0.1285,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0219,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.1395,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "expected_minutes": 26.1,
                "projection_minutes": 23.33,
                "minutes_scale": 1.1186,
                "appearance_probability": 0.595
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1035,
                "goals": 0.1285,
                "goal_rate": 0.1285,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0219,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.1395,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1035,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0219,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.1395,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.20 (squad xG sum 1.0809, xG scale 1.1111, xA scale 1.1940, team xA 0.78 = 0.65 x lambda)",
              "stats": {
                "expected_goals": 0.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.1629,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.201,
                "squad_xg_sum": 1.0809,
                "squad_xa_sum": 0.6538,
                "team_expected_assists": 0.7807,
                "team_xa_to_xg_ratio": 0.65,
                "bench_appearance_weighted": true,
                "xg_scale": 1.1111,
                "xa_scale": 1.194,
                "opponent_lambda": 1.297,
                "scoreline_reset": true,
                "appearance_weight": 0.595
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1035,
                  "after": 0.0684
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0219,
                  "after": 0.0156
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "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.1629,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4195,
                "fifa_rank": 4352.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.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.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0646,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1629,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0646,
                "goal_rate": 0.1285,
                "scorer_weight": 0.0795,
                "squad_weight_total": 1.2197,
                "weight_share": 0.0652,
                "finishing_factor": 1.1629,
                "appearance_weight": 0.595,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Taiwo Awoniyi",
                    "weight": 0.2714,
                    "already": 0,
                    "effective_weight": 0.2714,
                    "runner_up": "Jack Rudoni",
                    "runner_up_effective_weight": 0.2387
                  }
                ]
              }
            },
            {
              "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.0684,
                "goal_rate": 0.1285,
                "goals": 0,
                "shots_on_target": 0.3052,
                "total_shots": 0.7991,
                "expected_assists": 0.0156,
                "key_pass": 0.33,
                "rating": 6.6085,
                "minutes": 26.1,
                "total_pass": 7.3756,
                "accurate_pass": 6.6175,
                "duels_won": 3.1293,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 4.4369,
                "accurate_opp_half_passes": 3.6789,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 20.2985,
                "possession_lost": 6.2954,
                "dispossessed": 1.1362,
                "duels_lost": 7.6232,
                "aerial_lost": 4.9919,
                "total_contest": 0.7682,
                "won_contest": 0.4459,
                "ball_recovery": 1.65,
                "challenges_lost": 0.0,
                "fouls": 0.4459,
                "fouls_drawn": 1.1471,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7682,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.4459,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.6201,
                "xgot": 0.0922,
                "offsides": 0.6269,
                "ball_carries": 4.068,
                "total_progression": 6.3525,
                "progressive_carries": 0.7581,
                "shots_off_target": 0.4939,
                "bench_appearance_probability": 0.595,
                "bench_expected_minutes": 26.1,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.485,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0646,
                "projected_assists": 0,
                "assist_probability": 0.0154,
                "finishing_factor": 1.1629,
                "creation_factor": 0.8,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0154,
                "assist_rate": 0.0,
                "provider_weight": 0.0125,
                "squad_weight_total": 0.7398,
                "weight_share": 0.0169,
                "creation_factor": 0.8,
                "appearance_weight": 0.595,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Jack Rudoni",
                    "weight": 0.153,
                    "already": 0,
                    "effective_weight": 0.153,
                    "runner_up": "Jay DaSilva",
                    "runner_up_effective_weight": 0.1232,
                    "blocked_own_goal": [
                      "Taiwo Awoniyi"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.2,
        "expected_assists": 0.78,
        "total_shots": 10,
        "shots_on_target": 2,
        "total_passes": 291,
        "interceptions": 9,
        "tackles": 12,
        "avg_rating": 6.75,
        "possession_estimated_pct": 48.5,
        "pressing_actions_per_90": 6.8
      }
    },
    "Fulham": {
      "formation": "4-2-3-1",
      "players": {
        "Antonee Robinson": {
          "player_id": 803174,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 33,
          "height": 183,
          "market_value": 24000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 2,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7354,
            "minutes": 86,
            "total_pass": 45,
            "accurate_pass": 37,
            "duels_won": 5,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 22,
            "accurate_opp_half_passes": 18,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 70,
            "possession_lost": 15.16,
            "dispossessed": 0.512,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0491,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.062,
            "expected_assists": 0.0563,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0355,
            "ball_carries": 14,
            "total_progression": 70,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 1,
            "opponent_faced": "Taiwo Awoniyi",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0601,
            "projected_assists": 0,
            "assist_probability": 0.0547,
            "finishing_factor": 0.8573,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0234,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 42,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 4,
                "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": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0874,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 33,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0538,
                "expected_assists": 0.0521,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 35,
                "accurate_pass": 28,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 79,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0791,
                "expected_assists": 0.1044,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 50,
                "accurate_pass": 43,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 3,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.024,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 38,
                "tackles": 3,
                "tackles_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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.133,
                "expected_assists": 0.0405,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 50,
                "accurate_pass": 38,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.021,
                "expected_assists": 0.0979,
                "total_shots": 1,
                "total_pass": 43,
                "accurate_pass": 37,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.1148,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 65,
                "accurate_pass": 56,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 4,
                "clearances": 5,
                "aerial_won": 3,
                "duels_won": 8,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0246,
                "expected_assists": 0.0155,
                "total_shots": 1,
                "total_pass": 49,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "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": 14023931,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0158,
                "expected_assists": 0.0138,
                "total_shots": 1,
                "total_pass": 53,
                "accurate_pass": 41,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 1,
                "duels_won": 6,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 876,
            "combined_rank_score": 413.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 3.0,
            "fifa_rank": 670.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7354,
            "source_file": "data/player_rankings.csv",
            "player_name": "Antonee Robinson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sardor Sobirkhuzhaev",
                  "ranking": 871
                },
                {
                  "player_name": "Sung-joon Kim",
                  "ranking": 872
                },
                {
                  "player_name": "Derlan",
                  "ranking": 873
                },
                {
                  "player_name": "Vladimír Coufal",
                  "ranking": 874
                },
                {
                  "player_name": "Manuel Neuer",
                  "ranking": 875
                }
              ],
              "lower": [
                {
                  "player_name": "Amadou Onana",
                  "ranking": 877
                },
                {
                  "player_name": "Kim Hyeong-jin",
                  "ranking": 878
                },
                {
                  "player_name": "Sancet",
                  "ranking": 879
                },
                {
                  "player_name": "Jaloliddin Jumaboyev",
                  "ranking": 880
                },
                {
                  "player_name": "Vivian",
                  "ranking": 881
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "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.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0074,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 171.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.53,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (D_service) evaluated 28 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Fulham, 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.0764,
                "tackles": 2.2564,
                "tackles_won": 1.5285,
                "clearances": 2.4952,
                "aerial_won": 0.8147,
                "total_shots": 0.6187,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.4332,
                "accurate_pass": 36.8666,
                "duels_won": 4.7615,
                "total_long_balls": 3.0358,
                "accurate_long_balls": 1.4779,
                "total_own_half_passes": 22.1427,
                "accurate_own_half_passes": 19.0332,
                "total_opp_half_passes": 22.2906,
                "accurate_opp_half_passes": 17.8335,
                "crosses_total": 3.5042,
                "crosses_accurate": 0.5127,
                "touches": 69.6705,
                "possession_lost": 15.0486,
                "dispossessed": 0.5082,
                "duels_lost": 4.6797,
                "aerial_lost": 0.9294,
                "total_contest": 1.3717,
                "won_contest": 0.6546,
                "ball_recovery": 4.2003,
                "challenges_lost": 1.7042,
                "fouls": 0.8291,
                "fouls_drawn": 0.6935,
                "blocks": 0.3546,
                "goals": 0.0493,
                "goal_rate": 0.0493,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0651,
                "expected_assists": 0.0591,
                "shots_on_target": 0.0493,
                "big_chances_created": 0.0074,
                "xgot": 0.0373,
                "ball_carries": 14.0931,
                "total_progression": 69.9748,
                "progressive_carries": 1.9631,
                "key_pass": 1.2394,
                "shots_off_target": 0.5694
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0673,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0572,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0486,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0413,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.7245,
                  "aerialWon": 0.791,
                  "totalClearance_p90": 2.8372,
                  "totalTackle": 2.4078,
                  "defensive_actions": 3.526
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.076367735862732,
                    "model_output": 1.0764,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1228
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0495
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.032
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0243
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0217
                        }
                      ],
                      "others": 0.0578,
                      "total": 1.0764,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.133441
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.049171
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.030538
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.023078
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.021112
                        }
                      ],
                      "others_margin": 0.055079
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.256351947784424,
                    "model_output": 2.2564,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2155
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.1226
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1251
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0979
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0882
                        }
                      ],
                      "others": 0.224,
                      "total": 2.2564,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.144829
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.073889
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.07017
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.051687
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.044376
                        }
                      ],
                      "others_margin": 0.104498
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.5284945964813232,
                    "model_output": 1.5285,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1356
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1116
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0942
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.1011
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.067
                        }
                      ],
                      "others": 0.174,
                      "total": 1.5285,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.148796
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.107775
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.082771
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.081797
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.050701
                        }
                      ],
                      "others_margin": 0.120844
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.4952170848846436,
                    "model_output": 2.4952,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.469
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.451
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2537
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.214
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0869
                        }
                      ],
                      "others": -0.3933,
                      "total": 2.4952,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128339
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.123098
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.076528
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069467
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.029628
                        }
                      ],
                      "others_margin": -0.146365
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.8146989941596985,
                    "model_output": 0.8147,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.3134
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1432
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0989
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0808
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0479
                        }
                      ],
                      "others": -0.1727,
                      "total": 0.8147,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.256516
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125386
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.08488
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.075124
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.047357
                        }
                      ],
                      "others_margin": -0.192262
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6186609864234924,
                    "model_output": 0.6187,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0689
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0272
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0221
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0202
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0147
                        }
                      ],
                      "others": -0.0093,
                      "total": 0.6187,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.06895
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.027164
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.022051
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.020233
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.01474
                        }
                      ],
                      "others_margin": -0.009417
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.735421180725098,
                    "model_output": 6.7354,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "touches",
                          "contribution": 0.0128
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0112
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.011
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0098
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0268,
                      "total": 6.7354,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "touches",
                          "margin": 0.01278
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.011206
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.010952
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.009813
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.008951
                        }
                      ],
                      "others_margin": -0.026819
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 28,
                  "role_matches": 23,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0074, quality 0.669)",
              "stats": {
                "interceptions": 1.0843,
                "tackles": 2.273,
                "tackles_won": 1.5398,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6233,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5301,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8352,
                "fouls_drawn": 0.6986,
                "blocks": 0.3572,
                "goals": 0.0497,
                "goal_rate": 0.0497,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0656,
                "expected_assists": 0.0595,
                "shots_on_target": 0.0497,
                "big_chances_created": 0.0075,
                "xgot": 0.0376,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0074,
                "reference_quality": 0.505,
                "history_matches": 28,
                "history_shrink": 0.1515,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0125)",
              "stats": {
                "interceptions": 1.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6219,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0656,
                "expected_assists": 0.0595,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0376,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736
              },
              "params": {
                "blend_weight": 0.0125,
                "history_matches": 28,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9607,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.5398,
                  "after": 1.5521
                },
                {
                  "stat": "fouls",
                  "before": 0.8352,
                  "after": 0.8248
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.0843,
                  "after": 1.0771
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6227,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0656,
                "expected_assists": 0.0595,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0376,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736
              },
              "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.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6227,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0656,
                "expected_assists": 0.0595,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0376,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736,
                "opponent_faced": "Taiwo Awoniyi",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Taiwo Awoniyi",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6227,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0656,
                "expected_assists": 0.0595,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0376,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736,
                "opponent_faced": "Taiwo Awoniyi",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "interceptions": 1.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6227,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.062,
                "expected_assists": 0.0563,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0355,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736,
                "opponent_faced": "Taiwo Awoniyi",
                "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.8573,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 80.0)",
              "stats": {
                "interceptions": 1.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6227,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.062,
                "expected_assists": 0.0563,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0355,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736,
                "opponent_faced": "Taiwo Awoniyi",
                "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.8573,
                "creation_factor": 0.8,
                "fifa_overall": 80.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": 876,
                "fifa_rank": 670.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.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6227,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.062,
                "expected_assists": 0.0563,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0355,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736,
                "opponent_faced": "Taiwo Awoniyi",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0601,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8573,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0601,
                "goal_rate": 0.0491,
                "scorer_weight": 0.0532,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0389,
                "finishing_factor": 0.8573,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.0771,
                "tackles": 2.273,
                "tackles_won": 1.5521,
                "clearances": 2.5137,
                "aerial_won": 0.8207,
                "total_shots": 0.6227,
                "rating": 6.7354,
                "minutes": 86.46,
                "total_pass": 44.762,
                "accurate_pass": 37.1394,
                "duels_won": 4.7967,
                "total_long_balls": 3.0583,
                "accurate_long_balls": 1.4888,
                "total_own_half_passes": 22.3066,
                "accurate_own_half_passes": 19.174,
                "total_opp_half_passes": 22.4556,
                "accurate_opp_half_passes": 17.9655,
                "crosses_total": 3.5302,
                "crosses_accurate": 0.5165,
                "touches": 70.1861,
                "possession_lost": 15.16,
                "dispossessed": 0.512,
                "duels_lost": 4.7143,
                "aerial_lost": 0.9363,
                "total_contest": 1.3819,
                "won_contest": 0.6594,
                "ball_recovery": 4.2314,
                "challenges_lost": 1.7168,
                "fouls": 0.8248,
                "fouls_drawn": 0.6962,
                "blocks": 0.3572,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.062,
                "expected_assists": 0.0563,
                "shots_on_target": 0.0491,
                "big_chances_created": 0.0075,
                "xgot": 0.0355,
                "ball_carries": 14.1974,
                "total_progression": 70.4926,
                "progressive_carries": 1.9776,
                "key_pass": 1.2486,
                "shots_off_target": 0.5736,
                "opponent_faced": "Taiwo Awoniyi",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0601,
                "projected_assists": 0,
                "assist_probability": 0.0547,
                "finishing_factor": 0.8573,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0547,
                "assist_rate": 0.0,
                "provider_weight": 0.045,
                "squad_weight_total": 0.758,
                "weight_share": 0.0594,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Calvin Bassey": {
          "player_id": 861972,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 185,
          "market_value": 29000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 7.0691,
            "minutes": 90,
            "total_pass": 66,
            "accurate_pass": 60,
            "duels_won": 6,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 38,
            "accurate_own_half_passes": 37,
            "total_opp_half_passes": 28,
            "accurate_opp_half_passes": 23,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 82,
            "possession_lost": 9.1242,
            "dispossessed": 0.6329,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 1,
            "goal_rate": 0.0066,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.046,
            "expected_assists": 0.0165,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0251,
            "ball_carries": 26,
            "total_progression": 141,
            "progressive_carries": 2,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Brandon Thomas-Asante",
            "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.045,
            "projected_assists": 0,
            "assist_probability": 0.0164,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1466,
                "expected_assists": 0.0221,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 81,
                "accurate_pass": 78,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0205,
                "total_shots": 0,
                "total_pass": 61,
                "accurate_pass": 52,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 5,
                "duels_won": 9
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0588,
                "expected_assists": 0.0127,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 62,
                "accurate_pass": 56,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0516,
                "expected_assists": 0.0029,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 23,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "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": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0395,
                "total_shots": 0,
                "total_pass": 95,
                "accurate_pass": 87,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0104,
                "total_shots": 0,
                "total_pass": 78,
                "accurate_pass": 70,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0168,
                "expected_assists": 0.0229,
                "total_shots": 1,
                "total_pass": 89,
                "accurate_pass": 81,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0262,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 56,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 3,
                "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": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0129,
                "total_shots": 0,
                "total_pass": 67,
                "accurate_pass": 59,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2274,
            "combined_rank_score": 831.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 559.0,
            "sofascore_rating": 6.8133,
            "sofascore_appearances": 30.0,
            "fifa_rank": 1103.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0691,
            "source_file": "data/player_rankings.csv",
            "player_name": "Calvin Bassey",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Andoni Gorosabel",
                  "ranking": 2269
                },
                {
                  "player_name": "Jeong-Yeon Wu",
                  "ranking": 2270
                },
                {
                  "player_name": "Leo Román",
                  "ranking": 2271
                },
                {
                  "player_name": "Mathías Olivera",
                  "ranking": 2272
                },
                {
                  "player_name": "Luis Suárez",
                  "ranking": 2273
                }
              ],
              "lower": [
                {
                  "player_name": "Shahzod Akramov",
                  "ranking": 2275
                },
                {
                  "player_name": "Yves Bissouma",
                  "ranking": 2276
                },
                {
                  "player_name": "Nuriddin  Nuriddinov",
                  "ranking": 2277
                },
                {
                  "player_name": "Kim Min-Ho",
                  "ranking": 2278
                },
                {
                  "player_name": "Manuel Ugarte",
                  "ranking": 2279
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 37,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 37,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0073,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 37 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Fulham, 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.0793,
                "tackles": 1.5494,
                "tackles_won": 0.9934,
                "clearances": 4.031,
                "aerial_won": 1.4224,
                "total_shots": 0.605,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.0146,
                "accurate_pass": 59.2086,
                "duels_won": 5.6959,
                "total_long_balls": 6.4267,
                "accurate_long_balls": 3.2747,
                "total_own_half_passes": 38.1351,
                "accurate_own_half_passes": 36.3859,
                "total_opp_half_passes": 27.8795,
                "accurate_opp_half_passes": 22.8227,
                "crosses_total": 0.3292,
                "crosses_accurate": 0.0115,
                "touches": 80.9384,
                "possession_lost": 9.0581,
                "dispossessed": 0.6283,
                "duels_lost": 3.2525,
                "aerial_lost": 1.1507,
                "total_contest": 0.7151,
                "won_contest": 0.4504,
                "ball_recovery": 3.5068,
                "challenges_lost": 0.085,
                "fouls": 1.1917,
                "fouls_drawn": 1.5221,
                "blocks": 0.5027,
                "goals": 0.0067,
                "goal_rate": 0.0067,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0483,
                "expected_assists": 0.0174,
                "shots_on_target": 0.2202,
                "big_chances_created": 0.0,
                "xgot": 0.0263,
                "ball_carries": 26.2746,
                "total_progression": 139.5357,
                "progressive_carries": 2.464,
                "key_pass": 0.1742,
                "shots_off_target": 0.3848
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.8797,
                  "aerialWon": 1.5098,
                  "totalClearance_p90": 3.9351,
                  "totalTackle": 2.1964,
                  "defensive_actions": 3.0918
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.079338550567627,
                    "model_output": 1.0793,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1139
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0504
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0331
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0273
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0188
                        }
                      ],
                      "others": 0.0793,
                      "total": 1.0793,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124337
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.050448
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.032886
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.027174
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.018652
                        }
                      ],
                      "others_margin": 0.076375
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.5493698120117188,
                    "model_output": 1.5494,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1862
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.082
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0797
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0553
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0563
                        }
                      ],
                      "others": -0.1292,
                      "total": 1.5494,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126329
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.053691
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.05217
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.034711
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.0341
                        }
                      ],
                      "others_margin": -0.080071
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9934217929840088,
                    "model_output": 0.9934,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1207
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0726
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0551
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0475
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0402
                        }
                      ],
                      "others": -0.0927,
                      "total": 0.9934,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.133511
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.072489
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.05175
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.044392
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.037685
                        }
                      ],
                      "others_margin": -0.089242
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.03104305267334,
                    "model_output": 4.031,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4023
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3392
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2871
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1841
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0962
                        }
                      ],
                      "others": -0.1424,
                      "total": 4.031,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.111051
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.08492
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.066642
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.042204
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.022785
                        }
                      ],
                      "others_margin": -0.034723
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4223542213439941,
                    "model_output": 1.4224,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.145
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0887
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0626
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0461
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0434
                        }
                      ],
                      "others": -0.0444,
                      "total": 1.4224,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.099555
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.056331
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.039435
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.030091
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.029149
                        }
                      ],
                      "others_margin": -0.030713
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6049895882606506,
                    "model_output": 0.605,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0565
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0316
                        },
                        {
                          "name": "rating",
                          "contribution": 0.026
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0251
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0227
                        }
                      ],
                      "others": -0.0318,
                      "total": 0.605,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.056524
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.031564
                        },
                        {
                          "name": "rating",
                          "margin": 0.026
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.025125
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.022748
                        }
                      ],
                      "others_margin": -0.031912
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.069064140319824,
                    "model_output": 7.0691,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0762
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.063
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0451
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0416
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0343
                        }
                      ],
                      "others": 0.0185,
                      "total": 7.0691,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.076211
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.062964
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.0451
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.041552
                        },
                        {
                          "name": "rating",
                          "margin": 0.03432
                        }
                      ],
                      "others_margin": 0.018536
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 37,
                  "role_matches": 35,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0073, quality 0.710)",
              "stats": {
                "interceptions": 1.0872,
                "tackles": 1.5607,
                "tackles_won": 1.0007,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6094,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3316,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.2004,
                "fouls_drawn": 1.5332,
                "blocks": 0.5064,
                "goals": 0.0067,
                "goal_rate": 0.0067,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0487,
                "expected_assists": 0.0175,
                "shots_on_target": 0.2218,
                "big_chances_created": 0.0,
                "xgot": 0.0265,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0073,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0103)",
              "stats": {
                "interceptions": 1.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goals": 0.0066,
                "goal_rate": 0.0066,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0487,
                "expected_assists": 0.0175,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0265,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876
              },
              "params": {
                "blend_weight": 0.0103,
                "history_matches": 37,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.2004,
                  "after": 1.1932
                },
                {
                  "stat": "wonTackle",
                  "before": 1.0007,
                  "after": 0.9955
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goals": 0.0066,
                "goal_rate": 0.0066,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0487,
                "expected_assists": 0.0175,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0265,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876
              },
              "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.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goals": 0.0066,
                "goal_rate": 0.0066,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0487,
                "expected_assists": 0.0175,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0265,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876,
                "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.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "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": "Brandon Thomas-Asante",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goal_rate": 0.0066,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0487,
                "expected_assists": 0.0175,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0265,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876,
                "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.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "interceptions": 1.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goal_rate": 0.0066,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.046,
                "expected_assists": 0.0165,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0251,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876,
                "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.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 1.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goal_rate": 0.0066,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.046,
                "expected_assists": 0.0165,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0251,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876,
                "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.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 78.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": 2274,
                "fifa_rank": 1103.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goal_rate": 0.0066,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.046,
                "expected_assists": 0.0165,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0251,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876,
                "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.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "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.045,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.045,
                "goal_rate": 0.0066,
                "scorer_weight": 0.0368,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0269,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.0863,
                "tackles": 1.5607,
                "tackles_won": 0.9955,
                "clearances": 4.0605,
                "aerial_won": 1.4327,
                "total_shots": 0.6083,
                "rating": 7.0691,
                "minutes": 90.0,
                "total_pass": 66.4965,
                "accurate_pass": 59.6408,
                "duels_won": 5.7375,
                "total_long_balls": 6.4736,
                "accurate_long_balls": 3.2986,
                "total_own_half_passes": 38.4135,
                "accurate_own_half_passes": 36.6515,
                "total_opp_half_passes": 28.083,
                "accurate_opp_half_passes": 22.9893,
                "crosses_total": 0.3282,
                "crosses_accurate": 0.0116,
                "touches": 81.5293,
                "possession_lost": 9.1242,
                "dispossessed": 0.6329,
                "duels_lost": 3.2762,
                "aerial_lost": 1.1591,
                "total_contest": 0.7203,
                "won_contest": 0.4537,
                "ball_recovery": 3.5324,
                "challenges_lost": 0.0856,
                "fouls": 1.1932,
                "fouls_drawn": 1.5329,
                "blocks": 0.5064,
                "goal_rate": 0.0066,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.046,
                "expected_assists": 0.0165,
                "shots_on_target": 0.2195,
                "big_chances_created": 0.0,
                "xgot": 0.0251,
                "ball_carries": 26.4664,
                "total_progression": 140.5543,
                "progressive_carries": 2.482,
                "key_pass": 0.1755,
                "shots_off_target": 0.3876,
                "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.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "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.045,
                "projected_assists": 0,
                "assist_probability": 0.0164,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0164,
                "assist_rate": 0.0,
                "provider_weight": 0.0132,
                "squad_weight_total": 0.758,
                "weight_share": 0.0174,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "David Affengruber": {
          "player_id": 988672,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 22,
          "height": 185,
          "market_value": 18100000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.9844,
            "minutes": 89,
            "total_pass": 72,
            "accurate_pass": 62,
            "duels_won": 4,
            "total_long_balls": 7,
            "accurate_long_balls": 2,
            "total_own_half_passes": 46,
            "accurate_own_half_passes": 44,
            "total_opp_half_passes": 25,
            "accurate_opp_half_passes": 18,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 87,
            "possession_lost": 10.959,
            "dispossessed": 0.1332,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0198,
            "goals": 0,
            "assist_rate": 0.0181,
            "assists": 0,
            "expected_goals": 0.0397,
            "expected_assists": 0.0324,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0103,
            "ball_carries": 28,
            "total_progression": 104,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 1,
            "tackles_in_zone": 2.1,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.54,
            "opponent_faced": "Jack Rudoni",
            "pressing_zone": "Left Wing vs Right Back — Flank Battle",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0389,
            "projected_assists": 0,
            "assist_probability": 0.0319,
            "finishing_factor": 0.8,
            "creation_factor": 0.8078,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0061,
                "total_shots": 0,
                "total_pass": 110,
                "accurate_pass": 97,
                "tackles": 2,
                "clearances": 5,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0772,
                "expected_assists": 0.0059,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 80,
                "accurate_pass": 63,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 5,
                "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": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.017,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 61,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 7,
                "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": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.003,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 34,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 9,
                "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": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1202,
                "expected_assists": 0.0362,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 77,
                "accurate_pass": 70,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416311,
              "match_date": "2026-08-23",
              "home_team": "Elche",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 5.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0761,
                "expected_assists": 0.0035,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 37,
                "interceptions": 4,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421050,
              "match_date": "2026-08-17",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.131,
                "expected_assists": 0.0108,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 88,
                "accurate_pass": 83,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 5,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083743,
              "match_date": "2026-05-23",
              "home_team": "Girona FC",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0128,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 21,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "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": 14083671,
              "match_date": "2026-05-17",
              "home_team": "Elche",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.005,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 53,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "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": 14083608,
              "match_date": "2026-05-12",
              "home_team": "Real Betis",
              "away_team": "Elche",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Elche",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0167,
                "expected_assists": 0.0104,
                "total_shots": 1,
                "total_pass": 77,
                "accurate_pass": 73,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 7,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3203,
            "combined_rank_score": 1157.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1979.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9844,
            "source_file": "data/player_rankings.csv",
            "player_name": "David Affengruber",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "David Zima",
                  "ranking": 3198
                },
                {
                  "player_name": "Juan Iglesias",
                  "ranking": 3199
                },
                {
                  "player_name": "Thierno Barry",
                  "ranking": 3200
                },
                {
                  "player_name": "Tiago Palacios",
                  "ranking": 3201
                },
                {
                  "player_name": "Frederik Rønnow",
                  "ranking": 3202
                }
              ],
              "lower": [
                {
                  "player_name": "Kike Salas",
                  "ranking": 3204
                },
                {
                  "player_name": "Franck Honorat",
                  "ranking": 3205
                },
                {
                  "player_name": "Djibril Sow",
                  "ranking": 3206
                },
                {
                  "player_name": "Pepelu",
                  "ranking": 3207
                },
                {
                  "player_name": "Dayann Methalie",
                  "ranking": 3208
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 43,
          "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": 43,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0033,
            "fbref_prior_metrics": {
              "squad": "Elche",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.67,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 43 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Elche, rel: 0.20, 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.1757,
                "tackles": 1.5063,
                "tackles_won": 0.8931,
                "clearances": 5.1613,
                "aerial_won": 1.5331,
                "total_shots": 0.5524,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.3566,
                "accurate_pass": 61.6713,
                "duels_won": 4.1395,
                "total_long_balls": 7.2934,
                "accurate_long_balls": 1.5645,
                "total_own_half_passes": 46.1762,
                "accurate_own_half_passes": 43.5114,
                "total_opp_half_passes": 25.1804,
                "accurate_opp_half_passes": 18.1599,
                "crosses_total": 0.1519,
                "crosses_accurate": 0.0251,
                "touches": 86.7003,
                "possession_lost": 10.923,
                "dispossessed": 0.1328,
                "duels_lost": 3.007,
                "aerial_lost": 1.197,
                "total_contest": 0.4538,
                "won_contest": 0.3357,
                "ball_recovery": 4.0313,
                "challenges_lost": 0.414,
                "fouls": 1.145,
                "fouls_drawn": 0.6807,
                "blocks": 0.7309,
                "goals": 0.02,
                "goal_rate": 0.02,
                "assists": 0.0182,
                "assist_rate": 0.0182,
                "expected_goals": 0.0419,
                "expected_assists": 0.0342,
                "shots_on_target": 0.048,
                "big_chances_created": 0.0478,
                "xgot": 0.0109,
                "ball_carries": 28.1162,
                "total_progression": 103.8592,
                "progressive_carries": 1.0285,
                "key_pass": 0.2602,
                "shots_off_target": 0.5044
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 5.1
                  },
                  {
                    "match_date": "2026-08-17",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Girona FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.3481,
                  "aerialWon": 1.2842,
                  "totalClearance_p90": 5.5199,
                  "totalTackle": 1.8585,
                  "defensive_actions": 3.1798
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1757310628890991,
                    "model_output": 1.1757,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1112
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0728
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0279
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.026
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.026
                        }
                      ],
                      "others": 0.0515,
                      "total": 1.1757,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121575
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.072272
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.026377
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.02398
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.023436
                        }
                      ],
                      "others_margin": 0.044696
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.506282925605774,
                    "model_output": 1.5063,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1741
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0956
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0662
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.065
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.046
                        }
                      ],
                      "others": -0.0993,
                      "total": 1.5063,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118582
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.059599
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.040898
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.040165
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.028248
                        }
                      ],
                      "others_margin": -0.063855
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8931081295013428,
                    "model_output": 0.8931,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1122
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.076
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0595
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0367
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0339
                        }
                      ],
                      "others": -0.129,
                      "total": 0.8931,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124674
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.076415
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.056004
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.034185
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.032584
                        }
                      ],
                      "others_margin": -0.13497
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.161334037780762,
                    "model_output": 5.1613,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.8117
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5167
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3276
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2872
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2738
                        }
                      ],
                      "others": -0.4808,
                      "total": 5.1613,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.21269
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115074
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.066653
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.05499
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.049751
                        }
                      ],
                      "others_margin": -0.089086
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.5331138372421265,
                    "model_output": 1.5331,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1663
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1388
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0916
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0887
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0568
                        }
                      ],
                      "others": -0.1167,
                      "total": 1.5331,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113375
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.093748
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.062842
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057283
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.035028
                        }
                      ],
                      "others_margin": -0.073296
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5523774027824402,
                    "model_output": 0.5524,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0614
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0369
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.012
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0119
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0101
                        }
                      ],
                      "others": -0.0308,
                      "total": 0.5524,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.06142
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.036944
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.011966
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.011921
                        },
                        {
                          "name": "rating",
                          "margin": 0.010142
                        }
                      ],
                      "others_margin": -0.031024
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.9843854904174805,
                    "model_output": 6.9844,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": 0.0553
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.044
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0367
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0255
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.015
                        }
                      ],
                      "others": 0.0175,
                      "total": 6.9844,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.055339
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.043972
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.036662
                        },
                        {
                          "name": "touches",
                          "margin": 0.025461
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.01502
                        }
                      ],
                      "others_margin": 0.017549
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 43,
                  "role_matches": 40,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0033, quality 0.612)",
              "stats": {
                "interceptions": 1.1796,
                "tackles": 1.5113,
                "tackles_won": 0.8961,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5543,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1524,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1488,
                "fouls_drawn": 0.6829,
                "blocks": 0.7333,
                "goals": 0.0201,
                "goal_rate": 0.0201,
                "assists": 0.0183,
                "assist_rate": 0.0183,
                "expected_goals": 0.042,
                "expected_assists": 0.0343,
                "shots_on_target": 0.0482,
                "big_chances_created": 0.048,
                "xgot": 0.0109,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061
              },
              "params": {
                "market_value_eur": 18100000,
                "quality_factor": 0.612,
                "boost_factor": 1.0033,
                "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.0135)",
              "stats": {
                "interceptions": 1.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goals": 0.0198,
                "goal_rate": 0.0198,
                "assists": 0.0181,
                "assist_rate": 0.0181,
                "expected_goals": 0.042,
                "expected_assists": 0.0343,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0109,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061
              },
              "params": {
                "blend_weight": 0.0135,
                "history_matches": 43,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.988,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Elche"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.5543,
                  "after": 0.5691
                },
                {
                  "stat": "fouls",
                  "before": 1.1488,
                  "after": 1.1377
                },
                {
                  "stat": "wasFouled",
                  "before": 0.6829,
                  "after": 0.6915
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1796,
                  "after": 1.1859
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goals": 0.0198,
                "goal_rate": 0.0198,
                "assists": 0.0181,
                "assist_rate": 0.0181,
                "expected_goals": 0.042,
                "expected_assists": 0.0343,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0109,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061
              },
              "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.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goals": 0.0198,
                "goal_rate": 0.0198,
                "assists": 0.0181,
                "assist_rate": 0.0181,
                "expected_goals": 0.042,
                "expected_assists": 0.0343,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0109,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.54,
                "opponent_faced": "Jack Rudoni",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jack Rudoni",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goal_rate": 0.0198,
                "goals": 0,
                "assist_rate": 0.0181,
                "assists": 0,
                "expected_goals": 0.042,
                "expected_assists": 0.0343,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0109,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.54,
                "opponent_faced": "Jack Rudoni",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "interceptions": 1.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goal_rate": 0.0198,
                "goals": 0,
                "assist_rate": 0.0181,
                "assists": 0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0324,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0103,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.54,
                "opponent_faced": "Jack Rudoni",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8078
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 1.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goal_rate": 0.0198,
                "goals": 0,
                "assist_rate": 0.0181,
                "assists": 0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0324,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0103,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.54,
                "opponent_faced": "Jack Rudoni",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8078,
                "fifa_overall": 76.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": 3203,
                "fifa_rank": 1979.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goal_rate": 0.0198,
                "goals": 0,
                "assist_rate": 0.0181,
                "assists": 0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0324,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0103,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.54,
                "opponent_faced": "Jack Rudoni",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0389,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8078,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0389,
                "goal_rate": 0.0198,
                "scorer_weight": 0.0318,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0232,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.1859,
                "tackles": 1.5113,
                "tackles_won": 0.8973,
                "clearances": 5.1784,
                "aerial_won": 1.5382,
                "total_shots": 0.5691,
                "rating": 6.9844,
                "minutes": 88.92,
                "total_pass": 71.5921,
                "accurate_pass": 61.8748,
                "duels_won": 4.1532,
                "total_long_balls": 7.3175,
                "accurate_long_balls": 1.5697,
                "total_own_half_passes": 46.3286,
                "accurate_own_half_passes": 43.655,
                "total_opp_half_passes": 25.2635,
                "accurate_opp_half_passes": 18.2198,
                "crosses_total": 0.1548,
                "crosses_accurate": 0.0252,
                "touches": 86.9864,
                "possession_lost": 10.959,
                "dispossessed": 0.1332,
                "duels_lost": 3.0169,
                "aerial_lost": 1.201,
                "total_contest": 0.4553,
                "won_contest": 0.3368,
                "ball_recovery": 4.0446,
                "challenges_lost": 0.4154,
                "fouls": 1.1377,
                "fouls_drawn": 0.6915,
                "blocks": 0.7333,
                "goal_rate": 0.0198,
                "goals": 0,
                "assist_rate": 0.0181,
                "assists": 0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0324,
                "shots_on_target": 0.0475,
                "big_chances_created": 0.048,
                "xgot": 0.0103,
                "ball_carries": 28.209,
                "total_progression": 104.2019,
                "progressive_carries": 1.0319,
                "key_pass": 0.2611,
                "shots_off_target": 0.5061,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.54,
                "opponent_faced": "Jack Rudoni",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0389,
                "projected_assists": 0,
                "assist_probability": 0.0319,
                "finishing_factor": 0.8,
                "creation_factor": 0.8078,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0319,
                "assist_rate": 0.0181,
                "provider_weight": 0.0262,
                "squad_weight_total": 0.758,
                "weight_share": 0.0345,
                "creation_factor": 0.8078,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Timothy Castagne": {
          "player_id": 329417,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 21,
          "height": 185,
          "market_value": 7600000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7698,
            "minutes": 86,
            "total_pass": 48,
            "accurate_pass": 41,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 1,
            "total_own_half_passes": 25,
            "accurate_own_half_passes": 22,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 19,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 69,
            "possession_lost": 10.7903,
            "dispossessed": 0.2068,
            "duels_lost": 4,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0719,
            "assists": 0,
            "expected_goals": 0.0726,
            "expected_assists": 0.0818,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0442,
            "ball_carries": 13,
            "total_progression": 39,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Brandon Thomas-Asante",
            "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.07,
            "projected_assists": 0,
            "assist_probability": 0.0785,
            "finishing_factor": 0.8,
            "creation_factor": 0.893,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1061,
                "total_shots": 0,
                "total_pass": 90,
                "accurate_pass": 82,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 35,
                "clearances": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 72,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0102,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 25,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5837,
                "expected_assists": 0.1867,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 69,
                "accurate_pass": 59,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 68,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 14,
                "tackles": 1,
                "tackles_won": 1,
                "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": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0932,
                "expected_assists": 0.1795,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 43,
                "accurate_pass": 34,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0894,
                "expected_assists": 0.148,
                "total_shots": 1,
                "total_pass": 32,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "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": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.048,
                "expected_assists": 0.1482,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 56,
                "accurate_pass": 49,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 2,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 83,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.216,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 38,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 2,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.147,
                "expected_assists": 0.0073,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 32,
                "accurate_pass": 26,
                "tackles": 1,
                "tackles_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3169,
            "combined_rank_score": 1135.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 81.0,
            "sofascore_rating": 7.55,
            "sofascore_appearances": 6.0,
            "fifa_rank": 2190.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7698,
            "source_file": "data/player_rankings.csv",
            "player_name": "Timothy Castagne",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nicolás Fernández",
                  "ranking": 3164
                },
                {
                  "player_name": "Žan Vipotnik",
                  "ranking": 3165
                },
                {
                  "player_name": "Mykhailo Mudryk",
                  "ranking": 3166
                },
                {
                  "player_name": "Diego López",
                  "ranking": 3167
                },
                {
                  "player_name": "Taty Castellanos",
                  "ranking": 3168
                }
              ],
              "lower": [
                {
                  "player_name": "Edson Álvarez",
                  "ranking": 3170
                },
                {
                  "player_name": "Kevin Trapp",
                  "ranking": 3171
                },
                {
                  "player_name": "Sean Longstaff",
                  "ranking": 3172
                },
                {
                  "player_name": "Alexandr Golovin",
                  "ranking": 3173
                },
                {
                  "player_name": "Romain Perraud",
                  "ranking": 3174
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9996,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 157.0,
              "goals_per90": 0.0,
              "assists_per90": 0.5882352941176471,
              "shots_per90": 0.57,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (D_service) evaluated 36 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Fulham, rel: 0.11, gls/90: 0.0, ast/90: 0.5882352941176471)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.9527,
                "tackles": 1.5343,
                "tackles_won": 0.9405,
                "clearances": 3.3395,
                "aerial_won": 1.1197,
                "total_shots": 0.5301,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2821,
                "accurate_pass": 41.0841,
                "duels_won": 4.0783,
                "total_long_balls": 3.561,
                "accurate_long_balls": 1.0805,
                "total_own_half_passes": 25.1669,
                "accurate_own_half_passes": 22.1136,
                "total_opp_half_passes": 23.1151,
                "accurate_opp_half_passes": 18.9705,
                "crosses_total": 1.8848,
                "crosses_accurate": 0.3581,
                "touches": 69.3979,
                "possession_lost": 10.7946,
                "dispossessed": 0.2069,
                "duels_lost": 3.7569,
                "aerial_lost": 1.6953,
                "total_contest": 1.1768,
                "won_contest": 0.7863,
                "ball_recovery": 3.3213,
                "challenges_lost": 0.2527,
                "fouls": 1.2116,
                "fouls_drawn": 0.7707,
                "blocks": 0.5711,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0675,
                "assist_rate": 0.0675,
                "expected_goals": 0.0768,
                "expected_assists": 0.0865,
                "shots_on_target": 0.2206,
                "big_chances_created": 0.0953,
                "xgot": 0.0467,
                "ball_carries": 12.8149,
                "total_progression": 39.1652,
                "progressive_carries": 0.5833,
                "key_pass": 0.7076,
                "shots_off_target": 0.3095
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.0227,
                  "aerialWon": 0.8712,
                  "totalClearance_p90": 3.2785,
                  "totalTackle": 1.5576,
                  "defensive_actions": 2.2844
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9526703357696533,
                    "model_output": 0.9527,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1156
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.034
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0234
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0114
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0109
                        }
                      ],
                      "others": 0.0337,
                      "total": 0.9527,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.1261
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.03545
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.025147
                        },
                        {
                          "name": "touches",
                          "margin": 0.012345
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.01174
                        }
                      ],
                      "others_margin": 0.035852
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.5343024730682373,
                    "model_output": 1.5343,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1836
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0831
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0771
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0555
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0513
                        }
                      ],
                      "others": -0.0426,
                      "total": 1.5343,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124631
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.051711
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.04787
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.034661
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.031995
                        }
                      ],
                      "others_margin": -0.027363
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9405302405357361,
                    "model_output": 0.9405,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1144
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0743
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0566
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0288
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.028
                        }
                      ],
                      "others": -0.0358,
                      "total": 0.9405,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12697
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.074616
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.056349
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.02992
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.029097
                        }
                      ],
                      "others_margin": -0.037324
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.3395237922668457,
                    "model_output": 3.3395,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4719
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.297
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2384
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0956
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0923
                        }
                      ],
                      "others": -0.0254,
                      "total": 3.3395,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129066
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.079275
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.068523
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.028038
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.027061
                        }
                      ],
                      "others_margin": -0.007539
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.1196705102920532,
                    "model_output": 1.1197,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2919
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1442
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0421
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0405
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0329
                        }
                      ],
                      "others": -0.0681,
                      "total": 1.1197,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.236612
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12392
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.034614
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.034485
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.028085
                        }
                      ],
                      "others_margin": -0.059075
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5300911664962769,
                    "model_output": 0.5301,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0625
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0219
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0111
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.01
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0081
                        }
                      ],
                      "others": -0.02,
                      "total": 0.5301,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.062475
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.021936
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.011075
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.010036
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.008065
                        }
                      ],
                      "others_margin": -0.020156
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.76981782913208,
                    "model_output": 6.7698,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.016
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0081
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0076
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0075
                        },
                        {
                          "name": "touches",
                          "contribution": 0.006
                        }
                      ],
                      "others": -0.0194,
                      "total": 6.7698,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.015959
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.008058
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.00758
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.007466
                        },
                        {
                          "name": "touches",
                          "margin": 0.006015
                        }
                      ],
                      "others_margin": -0.019433
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "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.9996, quality 0.494)",
              "stats": {
                "interceptions": 0.9523,
                "tackles": 1.5337,
                "tackles_won": 0.9402,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5299,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.884,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2111,
                "fouls_drawn": 0.7704,
                "blocks": 0.5709,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0675,
                "assist_rate": 0.0675,
                "expected_goals": 0.0768,
                "expected_assists": 0.0865,
                "shots_on_target": 0.2205,
                "big_chances_created": 0.0953,
                "xgot": 0.0467,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094
              },
              "params": {
                "market_value_eur": 7600000,
                "quality_factor": 0.4939,
                "boost_factor": 0.9996,
                "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.0090)",
              "stats": {
                "interceptions": 0.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.53,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0719,
                "assist_rate": 0.0719,
                "expected_goals": 0.0768,
                "expected_assists": 0.0865,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0467,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094
              },
              "params": {
                "blend_weight": 0.009,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9557,
                "prior_reliability": 0.1133,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.2111,
                  "after": 1.2255
                },
                {
                  "stat": "wasFouled",
                  "before": 0.7704,
                  "after": 0.7837
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5328,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0719,
                "assist_rate": 0.0719,
                "expected_goals": 0.0768,
                "expected_assists": 0.0865,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0467,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094
              },
              "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.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5328,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0719,
                "assist_rate": 0.0719,
                "expected_goals": 0.0768,
                "expected_assists": 0.0865,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0467,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "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": "Brandon Thomas-Asante",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5328,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0719,
                "assists": 0,
                "expected_goals": 0.0768,
                "expected_assists": 0.0865,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0467,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "interceptions": 0.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5328,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0719,
                "assists": 0,
                "expected_goals": 0.0726,
                "expected_assists": 0.0818,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0442,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.893
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 75.0)",
              "stats": {
                "interceptions": 0.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5328,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0719,
                "assists": 0,
                "expected_goals": 0.0726,
                "expected_assists": 0.0818,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0442,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.893,
                "fifa_overall": 75.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": 3169,
                "fifa_rank": 2190.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5328,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0719,
                "assists": 0,
                "expected_goals": 0.0726,
                "expected_assists": 0.0818,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0442,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "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.07,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.893,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.07,
                "goal_rate": 0.0,
                "scorer_weight": 0.0581,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0425,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.9538,
                "tackles": 1.5337,
                "tackles_won": 0.9419,
                "clearances": 3.3382,
                "aerial_won": 1.1192,
                "total_shots": 0.5328,
                "rating": 6.7698,
                "minutes": 86.01,
                "total_pass": 48.2628,
                "accurate_pass": 41.0677,
                "duels_won": 4.0767,
                "total_long_balls": 3.5596,
                "accurate_long_balls": 1.0801,
                "total_own_half_passes": 25.1568,
                "accurate_own_half_passes": 22.1048,
                "total_opp_half_passes": 23.1059,
                "accurate_opp_half_passes": 18.9629,
                "crosses_total": 1.8822,
                "crosses_accurate": 0.358,
                "touches": 69.3701,
                "possession_lost": 10.7903,
                "dispossessed": 0.2068,
                "duels_lost": 3.7554,
                "aerial_lost": 1.6946,
                "total_contest": 1.1763,
                "won_contest": 0.786,
                "ball_recovery": 3.32,
                "challenges_lost": 0.2526,
                "fouls": 1.2255,
                "fouls_drawn": 0.7837,
                "blocks": 0.5709,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0719,
                "assists": 0,
                "expected_goals": 0.0726,
                "expected_assists": 0.0818,
                "shots_on_target": 0.2234,
                "big_chances_created": 0.0953,
                "xgot": 0.0442,
                "ball_carries": 12.8098,
                "total_progression": 39.1495,
                "progressive_carries": 0.5831,
                "key_pass": 0.7073,
                "shots_off_target": 0.3094,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Brandon Thomas-Asante",
                "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.07,
                "projected_assists": 0,
                "assist_probability": 0.0785,
                "finishing_factor": 0.8,
                "creation_factor": 0.893,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0785,
                "assist_rate": 0.0719,
                "provider_weight": 0.073,
                "squad_weight_total": 0.758,
                "weight_share": 0.0964,
                "creation_factor": 0.893,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Bernd Leno": {
          "player_id": 103335,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 190,
          "market_value": 5500000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0072,
            "rating": 6.9727,
            "minutes": 90,
            "total_pass": 40,
            "accurate_pass": 31,
            "total_long_balls": 12,
            "accurate_long_balls": 4,
            "touches": 49,
            "clearances": 1,
            "ball_recovery": 9,
            "high_claims": 1,
            "punches": 0.4457,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 8.831,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 29,
            "accurate_own_half_passes": 28,
            "gk_engine_opponent_lambda": 1.1616,
            "shots_faced": 11.4,
            "expected_saves": 2.79,
            "high_pressure_saves": 0.96,
            "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
            "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": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 48,
                "accurate_pass": 44,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 26,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": -0.2112
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 32,
                "clearances": 2,
                "ball_recovery": 8,
                "saves": 5,
                "goals_prevented": 0.0629
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 19,
                "clearances": 1,
                "ball_recovery": 8,
                "saves": 3,
                "goals_prevented": 0.8958
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0022,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 39,
                "ball_recovery": 8,
                "saves": 2,
                "goals_prevented": -0.4348
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 30,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 8,
                "saves": 3,
                "goals_prevented": 0.3319
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 34,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": -0.9787
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 26,
                "ball_recovery": 11,
                "saves": 2,
                "goals_prevented": 0.1642
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 37,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 2,
                "goals_prevented": -0.4913
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 28,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": -0.2819
              },
              "has_player_stats": true,
              "league_name": "Premier 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": 1549,
            "combined_rank_score": 633.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 416.0,
            "sofascore_rating": 6.9263,
            "sofascore_appearances": 38.0,
            "fifa_rank": 850.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9727,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bernd Leno",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alisher Salimov",
                  "ranking": 1544
                },
                {
                  "player_name": "Bu-Seong Jang",
                  "ranking": 1545
                },
                {
                  "player_name": "Her Dong-min",
                  "ranking": 1546
                },
                {
                  "player_name": "Filip Jørgensen",
                  "ranking": 1547
                },
                {
                  "player_name": "Olivier Boscagli",
                  "ranking": 1548
                }
              ],
              "lower": [
                {
                  "player_name": "Fredrik Aursnes",
                  "ranking": 1550
                },
                {
                  "player_name": "Yuri Berchiche",
                  "ranking": 1551
                },
                {
                  "player_name": "Óscar Trejo",
                  "ranking": 1552
                },
                {
                  "player_name": "Han Jong-Mu",
                  "ranking": 1553
                },
                {
                  "player_name": "Eli Junior Kroupi",
                  "ranking": 1554
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 45,
          "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": 45,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9989,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "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 45 historical appearances across 3 target models; FBref 2026-2027 prior blended (Premier League, Fulham, 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.8279,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.2249,
                "accurate_pass": 31.4307,
                "total_long_balls": 12.1378,
                "accurate_long_balls": 3.7145,
                "touches": 48.9694,
                "clearances": 0.9458,
                "ball_recovery": 8.7013,
                "high_claims": 0.6336,
                "punches": 0.4462,
                "aerial_won": 0.2382,
                "sweeper_actions": 1.4608,
                "sweeper_accurate": 1.4608,
                "saves_inside_box": 1.5144,
                "possession_lost": 8.8407,
                "duels_won": 0.2715,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0453,
                "total_own_half_passes": 29.389,
                "accurate_own_half_passes": 28.4908
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-24T10:04:55.355626+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 200,
                    "rows": 7186
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "possessionLostCtrl": 8.8407,
                  "distribution_accuracy": 0.9715,
                  "saves": 2.5999,
                  "goalkeeperValueNormalized": 0.2391,
                  "save_contribution": 2.5725,
                  "accurateOwnHalfPasses": 28.4909
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.8279082775115967,
                    "model_output": 2.8279,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0396
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.0396
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0361
                      },
                      {
                        "name": "defensiveValueNormalized",
                        "importance": 0.0356
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.9357,
                      "items": [
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.1033
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0567
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0203
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0163
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0154
                        }
                      ],
                      "others": 0.0002,
                      "total": 2.8279,
                      "log_link": true,
                      "margin_base": 1.076962,
                      "item_margins": [
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.035821
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.020224
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.00729
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.005819
                        },
                        {
                          "name": "touches",
                          "margin": 0.005477
                        }
                      ],
                      "others_margin": 3.4e-05
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.007215900346636772,
                    "model_output": -0.0072,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0403
                      },
                      {
                        "name": "punches",
                        "importance": 0.0402
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.039
                      },
                      {
                        "name": "goodHighClaim",
                        "importance": 0.0381
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0377
                      }
                    ],
                    "decomposition": {
                      "base": -0.0276,
                      "items": [
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0391
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.0224
                        },
                        {
                          "name": "punches",
                          "contribution": 0.0202
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0199
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0178
                        }
                      ],
                      "others": 0.024,
                      "total": -0.0072,
                      "log_link": false,
                      "margin_base": -0.027557,
                      "item_margins": [
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.039106
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.022404
                        },
                        {
                          "name": "punches",
                          "margin": 0.020188
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.019936
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.017831
                        }
                      ],
                      "others_margin": 0.023896
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.972664833068848,
                    "model_output": 6.9727,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0419
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0397
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0368
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0351
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 6.9908,
                      "items": [
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0166
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.0113
                        },
                        {
                          "name": "punches",
                          "contribution": 0.0112
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.009
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": 0.0081
                        }
                      ],
                      "others": -0.0185,
                      "total": 6.9727,
                      "log_link": false,
                      "margin_base": 6.990849,
                      "item_margins": [
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.016634
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.011292
                        },
                        {
                          "name": "punches",
                          "margin": 0.011226
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.008965
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": 0.008095
                        }
                      ],
                      "others_margin": -0.018545
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 45,
                  "role_matches": 45,
                  "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.9989, quality 0.468)",
              "stats": {
                "saves": 2.8248,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0453,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595
              },
              "params": {
                "market_value_eur": 5500000,
                "quality_factor": 0.4683,
                "boost_factor": 0.9989,
                "reference_quality": 0.505,
                "history_matches": 45,
                "history_shrink": 0.1,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0087)",
              "stats": {
                "saves": 2.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595
              },
              "params": {
                "blend_weight": 0.0087,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595
              },
              "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.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595,
                "gk_engine_opponent_lambda": 1.1616,
                "shots_faced": 11.0,
                "expected_saves": 2.69,
                "high_pressure_saves": 0.93,
                "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.1616
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 2.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595,
                "gk_engine_opponent_lambda": 1.1616,
                "shots_faced": 11.0,
                "expected_saves": 2.69,
                "high_pressure_saves": 0.93,
                "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "saves": 2.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595,
                "gk_engine_opponent_lambda": 1.1616,
                "shots_faced": 11.4,
                "expected_saves": 2.79,
                "high_pressure_saves": 0.96,
                "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
                "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.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 11.0,
                  "after": 11.4
                },
                {
                  "stat": "expected_saves",
                  "before": 2.69,
                  "after": 2.79
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 0.93,
                  "after": 0.96
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 79.0)",
              "stats": {
                "saves": 2.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595,
                "gk_engine_opponent_lambda": 1.1616,
                "shots_faced": 11.4,
                "expected_saves": 2.79,
                "high_pressure_saves": 0.96,
                "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
                "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": 7,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1549,
                "fifa_rank": 850.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": {
                "saves": 2.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595,
                "gk_engine_opponent_lambda": 1.1616,
                "shots_faced": 11.4,
                "expected_saves": 2.79,
                "high_pressure_saves": 0.96,
                "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
                "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": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.8263,
                "goals_prevented": -0.0072,
                "rating": 6.9727,
                "minutes": 90.0,
                "total_pass": 40.1807,
                "accurate_pass": 31.3961,
                "total_long_balls": 12.1244,
                "accurate_long_balls": 3.7104,
                "touches": 48.9155,
                "clearances": 0.9448,
                "ball_recovery": 8.6917,
                "high_claims": 0.6329,
                "punches": 0.4457,
                "aerial_won": 0.2379,
                "sweeper_actions": 1.4592,
                "sweeper_accurate": 1.4592,
                "saves_inside_box": 1.5127,
                "possession_lost": 8.831,
                "duels_won": 0.2712,
                "duels_lost": 0.0058,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0449,
                "total_own_half_passes": 29.3567,
                "accurate_own_half_passes": 28.4595,
                "gk_engine_opponent_lambda": 1.1616,
                "shots_faced": 11.4,
                "expected_saves": 2.79,
                "high_pressure_saves": 0.96,
                "opponent_faced": "Taiwo Awoniyi, Jack Rudoni",
                "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": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.758,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Sander Berge": {
          "player_id": 793167,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 16,
          "height": 195,
          "market_value": 26000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0726,
            "assist_rate": 0.0879,
            "assists": 0,
            "expected_goals": 0.0806,
            "goal_rate": 0.097,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.0561,
            "minutes": 84,
            "total_pass": 60,
            "accurate_pass": 54,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 32,
            "accurate_own_half_passes": 30,
            "total_opp_half_passes": 28,
            "accurate_opp_half_passes": 24,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 70,
            "possession_lost": 8.6422,
            "dispossessed": 0.6241,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0871,
            "ball_carries": 23,
            "total_progression": 49,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.251,
            "dribbles_attempted": 2,
            "dribbles_successful": 1.0,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.591,
            "pressing_faced": "LOW",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Matt Grimes",
            "opponent_faced": "Matt Grimes",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0774,
            "projected_assists": 0,
            "assist_probability": 0.07,
            "finishing_factor": 1.0873,
            "creation_factor": 1.0875,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0221,
                "expected_assists": 0.0882,
                "total_shots": 1,
                "total_pass": 103,
                "accurate_pass": 94,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1896,
                "expected_assists": 0.0253,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 58,
                "accurate_pass": 51,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "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": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 77,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0501,
                "expected_assists": 0.021,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 45,
                "accurate_pass": 43,
                "key_pass": 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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0105,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 37,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 29,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1012,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 34,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 83,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1964,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 50,
                "key_pass": 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": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 73,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0294,
                "expected_assists": 0.0271,
                "total_shots": 1,
                "total_pass": 61,
                "accurate_pass": 58,
                "key_pass": 2,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0337,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 50,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1642,
                "expected_assists": 0.0121,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 38,
                "accurate_pass": 33,
                "tackles": 1,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024004,
              "match_date": "2026-04-25",
              "home_team": "Fulham",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0555,
                "expected_assists": 0.1367,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 32,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1037,
            "combined_rank_score": 465.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 69.0,
            "sofascore_rating": 7.5875,
            "sofascore_appearances": 8.0,
            "fifa_rank": 861.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0561,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sander Berge",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carlos Romero",
                  "ranking": 1032
                },
                {
                  "player_name": "Shota Gvazava",
                  "ranking": 1033
                },
                {
                  "player_name": "Joachim Andersen",
                  "ranking": 1034
                },
                {
                  "player_name": "Alisson",
                  "ranking": 1035
                },
                {
                  "player_name": "Anthony Elanga",
                  "ranking": 1036
                }
              ],
              "lower": [
                {
                  "player_name": "Rustam Nartazhiev",
                  "ranking": 1038
                },
                {
                  "player_name": "Christian Bravo",
                  "ranking": 1039
                },
                {
                  "player_name": "Julián Quiñones",
                  "ranking": 1040
                },
                {
                  "player_name": "Alex Iwobi",
                  "ranking": 1041
                },
                {
                  "player_name": "Lee Ji-Hoon",
                  "ranking": 1042
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 42,
          "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": 42,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0058,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 154.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.58,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (M_service) evaluated 42 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Fulham, rel: 0.11, 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.0269,
                "expected_assists": 0.0763,
                "assists": 0.0881,
                "assist_rate": 0.0881,
                "expected_goals": 0.0677,
                "goals": 0.0777,
                "goal_rate": 0.0777,
                "shots_on_target": 0.3059,
                "total_shots": 0.8715,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.4064,
                "accurate_pass": 53.385,
                "duels_won": 2.7457,
                "total_long_balls": 2.5513,
                "accurate_long_balls": 1.5237,
                "total_own_half_passes": 31.6078,
                "accurate_own_half_passes": 29.5042,
                "total_opp_half_passes": 27.7986,
                "accurate_opp_half_passes": 23.8808,
                "crosses_total": 0.1886,
                "crosses_accurate": 0.0078,
                "touches": 69.481,
                "possession_lost": 8.5924,
                "dispossessed": 0.6205,
                "duels_lost": 3.3078,
                "aerial_won": 0.9641,
                "aerial_lost": 0.8499,
                "interceptions": 0.5755,
                "tackles_won": 0.8395,
                "tackles": 1.3349,
                "clearances": 1.4716,
                "total_contest": 0.5295,
                "won_contest": 0.1183,
                "challenges_lost": 0.4859,
                "fouls": 0.9402,
                "fouls_drawn": 0.3284,
                "blocks": 0.388,
                "big_chances_created": 0.088,
                "big_chances_missed": 0.0633,
                "xgot": 0.0732,
                "ball_carries": 22.7084,
                "total_progression": 48.7029,
                "progressive_carries": 1.1272,
                "shots_off_target": 0.5656
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.43,
                  "totalShots": 0.8071,
                  "expectedGoals": 0.051,
                  "expectedAssists": 0.0585,
                  "onTargetScoringAttempt": 0.2382
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.0268663167953491,
                    "model_output": 1.0269,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1385
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0971
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0697
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.064
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0414
                        }
                      ],
                      "others": 0.1267,
                      "total": 1.0269,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.143949
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.098769
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.071878
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.065782
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.044972
                        }
                      ],
                      "others_margin": 0.131714
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07631223648786545,
                    "model_output": 0.0763,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0151
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.011
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.004
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0035
                        }
                      ],
                      "others": 0.0046,
                      "total": 0.0763,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.193673
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.148768
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.143181
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.054806
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.047278
                        }
                      ],
                      "others_margin": 0.062357
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0880800113081932,
                    "model_output": 0.0881,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0117
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0089
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0083
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0082
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0078
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.0881,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.143361
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.111139
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.094071
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.092415
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.087893
                        }
                      ],
                      "others_margin": -0.049573
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06768292188644409,
                    "model_output": 0.0677,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0127
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0116
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0096
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0034
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0165,
                      "total": 0.0677,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.144617
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.133795
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.109333
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.040093
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.029486
                        }
                      ],
                      "others_margin": -0.218455
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07769819349050522,
                    "model_output": 0.0777,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0128
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0126
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0086
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0059
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0049
                        }
                      ],
                      "others": -0.0122,
                      "total": 0.0777,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121082
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.119575
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.090853
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.066651
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.056193
                        }
                      ],
                      "others_margin": -0.145672
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.30589723587036133,
                    "model_output": 0.3059,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0455
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0446
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0297
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0202
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0196
                        }
                      ],
                      "others": -0.0483,
                      "total": 0.3059,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.150359
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.147496
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.087348
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058551
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.056991
                        }
                      ],
                      "others_margin": -0.146657
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.871538519859314,
                    "model_output": 0.8715,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1505
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0886
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0622
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0216
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0197
                        }
                      ],
                      "others": -0.0838,
                      "total": 0.8715,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.15054
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.088559
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.062212
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.021573
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.019745
                        }
                      ],
                      "others_margin": -0.083807
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.0561113357543945,
                    "model_output": 7.0561,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0912
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0328
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.029
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.027
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0209
                        }
                      ],
                      "others": -0.0009,
                      "total": 7.0561,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.091179
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.032836
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.028985
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.027036
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.020863
                        }
                      ],
                      "others_margin": -0.000839
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 40,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0058, quality 0.686)",
              "stats": {
                "key_pass": 1.0328,
                "expected_assists": 0.0768,
                "assists": 0.0886,
                "assist_rate": 0.0886,
                "expected_goals": 0.0681,
                "goals": 0.0781,
                "goal_rate": 0.0781,
                "shots_on_target": 0.3077,
                "total_shots": 0.8766,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1897,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 0.9697,
                "aerial_lost": 0.8548,
                "interceptions": 0.5788,
                "tackles_won": 0.8444,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9457,
                "fouls_drawn": 0.3303,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0637,
                "xgot": 0.0736,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.5689
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0058,
                "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.0078)",
              "stats": {
                "key_pass": 1.0328,
                "expected_assists": 0.0768,
                "assists": 0.0879,
                "assist_rate": 0.0879,
                "expected_goals": 0.0681,
                "goals": 0.0775,
                "goal_rate": 0.0775,
                "shots_on_target": 0.3053,
                "total_shots": 0.874,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 0.9697,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0637,
                "xgot": 0.0736,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.5689
              },
              "params": {
                "blend_weight": 0.0078,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9333,
                "prior_reliability": 0.1133,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.8444,
                  "after": 0.8378
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.0328,
                "expected_assists": 0.0768,
                "assists": 0.0879,
                "assist_rate": 0.0879,
                "expected_goals": 0.0681,
                "goals": 0.0775,
                "goal_rate": 0.0775,
                "shots_on_target": 0.3053,
                "total_shots": 0.8742,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 0.9697,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0637,
                "xgot": 0.0736,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.5689
              },
              "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.0328,
                "expected_assists": 0.0768,
                "assists": 0.0879,
                "assist_rate": 0.0879,
                "expected_goals": 0.0852,
                "goals": 0.097,
                "goal_rate": 0.097,
                "shots_on_target": 0.3819,
                "total_shots": 1.0936,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 1.4,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0797,
                "xgot": 0.0921,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.7117,
                "duel_xg_multiplier": 1.251,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.591,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Matt Grimes",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.591,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.251,
                  "skill_edge": 0.1107,
                  "height_edge": 0.06,
                  "attacker_skill": 0.7219,
                  "defender_skill": 0.4759,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Matt Grimes",
                      "market_value": 5200000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4759
                    }
                  ],
                  "xg_override": 0.0852
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.9697,
                  "after": 1.4
                },
                {
                  "stat": "totalShots",
                  "before": 0.8742,
                  "after": 1.0936
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.5689,
                  "after": 0.7117
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3053,
                  "after": 0.3819
                },
                {
                  "stat": "goals",
                  "before": 0.0775,
                  "after": 0.097
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0736,
                  "after": 0.0921
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0681,
                  "after": 0.0852
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.0637,
                  "after": 0.0797
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 1.0328,
                "expected_assists": 0.0768,
                "assist_rate": 0.0879,
                "assists": 0,
                "expected_goals": 0.0852,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.3819,
                "total_shots": 1.0936,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 1.4,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0797,
                "xgot": 0.0921,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.7117,
                "duel_xg_multiplier": 1.251,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.591,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "key_pass": 1.0328,
                "expected_assists": 0.0726,
                "assist_rate": 0.0879,
                "assists": 0,
                "expected_goals": 0.0806,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.3819,
                "total_shots": 1.0936,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 1.4,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0797,
                "xgot": 0.0871,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.7117,
                "duel_xg_multiplier": 1.251,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.591,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "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.0873,
                "creation_factor": 1.0875
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 1.0328,
                "expected_assists": 0.0726,
                "assist_rate": 0.0879,
                "assists": 0,
                "expected_goals": 0.0806,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.3819,
                "total_shots": 1.0936,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 1.4,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0797,
                "xgot": 0.0871,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.7117,
                "duel_xg_multiplier": 1.251,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.591,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "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.0873,
                "creation_factor": 1.0875,
                "fifa_overall": 79.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": 1037,
                "fifa_rank": 861.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.0328,
                "expected_assists": 0.0726,
                "assist_rate": 0.0879,
                "assists": 0,
                "expected_goals": 0.0806,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.3819,
                "total_shots": 1.0936,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 1.4,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0797,
                "xgot": 0.0871,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.7117,
                "duel_xg_multiplier": 1.251,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.591,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0774,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0873,
                "creation_factor": 1.0875,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0774,
                "goal_rate": 0.097,
                "scorer_weight": 0.0876,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0641,
                "finishing_factor": 1.0873,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.0328,
                "expected_assists": 0.0726,
                "assist_rate": 0.0879,
                "assists": 0,
                "expected_goals": 0.0806,
                "goal_rate": 0.097,
                "goals": 0,
                "shots_on_target": 0.3819,
                "total_shots": 1.0936,
                "rating": 7.0561,
                "minutes": 84.0,
                "total_pass": 59.751,
                "accurate_pass": 53.6946,
                "duels_won": 2.7616,
                "total_long_balls": 2.5661,
                "accurate_long_balls": 1.5325,
                "total_own_half_passes": 31.7911,
                "accurate_own_half_passes": 29.6753,
                "total_opp_half_passes": 27.9598,
                "accurate_opp_half_passes": 24.0193,
                "crosses_total": 0.1925,
                "crosses_accurate": 0.0078,
                "touches": 69.884,
                "possession_lost": 8.6422,
                "dispossessed": 0.6241,
                "duels_lost": 3.327,
                "aerial_won": 1.4,
                "aerial_lost": 0.8548,
                "interceptions": 0.5743,
                "tackles_won": 0.8378,
                "tackles": 1.3426,
                "clearances": 1.4801,
                "total_contest": 0.5326,
                "won_contest": 0.119,
                "challenges_lost": 0.4887,
                "fouls": 0.9426,
                "fouls_drawn": 0.3277,
                "blocks": 0.3903,
                "big_chances_created": 0.0885,
                "big_chances_missed": 0.0797,
                "xgot": 0.0871,
                "ball_carries": 22.8401,
                "total_progression": 48.9854,
                "progressive_carries": 1.1337,
                "shots_off_target": 0.7117,
                "duel_xg_multiplier": 1.251,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.591,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0774,
                "projected_assists": 0,
                "assist_probability": 0.07,
                "finishing_factor": 1.0873,
                "creation_factor": 1.0875,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.07,
                "assist_rate": 0.0879,
                "provider_weight": 0.079,
                "squad_weight_total": 0.758,
                "weight_share": 0.1042,
                "creation_factor": 1.0875,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Shea Charles": {
          "player_id": 1131449,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 19,
          "height": 189,
          "market_value": 24000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0642,
            "assist_rate": 0.058,
            "assists": 0,
            "expected_goals": 0.047,
            "goal_rate": 0.0521,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.0384,
            "minutes": 85,
            "total_pass": 54,
            "accurate_pass": 50,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 29,
            "accurate_own_half_passes": 27,
            "total_opp_half_passes": 25,
            "accurate_opp_half_passes": 22,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 69,
            "possession_lost": 7.8117,
            "dispossessed": 0.678,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 2,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 19,
            "total_progression": 71,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.2156,
            "dribbles_attempted": 2,
            "dribbles_successful": 1.0,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.567,
            "pressing_faced": "LOW",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Matt Grimes",
            "opponent_faced": "Matt Grimes",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0459,
            "projected_assists": 0,
            "assist_probability": 0.0622,
            "finishing_factor": 1.0241,
            "creation_factor": 0.916,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0157,
                "expected_assists": 0.2653,
                "total_shots": 1,
                "total_pass": 69,
                "accurate_pass": 66,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 71,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0469,
                "expected_assists": 0.0056,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 40,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0155,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 32,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0183,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 52,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 79,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0897,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 49,
                "key_pass": 3,
                "interceptions": 3,
                "duels_won": 1,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 22,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0906,
                "expected_assists": 0.0314,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 20,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 23,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0046,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 27,
                "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": 3733,
            "combined_rank_score": 1722.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 126.0,
            "sofascore_rating": 7.38,
            "sofascore_appearances": 5.0,
            "fifa_rank": 3319.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0384,
            "source_file": "data/player_rankings.csv",
            "player_name": "Shea Charles",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Oskar Pietuszewski",
                  "ranking": 3728
                },
                {
                  "player_name": "Honest Ahanor",
                  "ranking": 3729
                },
                {
                  "player_name": "Alexandru Mitriță",
                  "ranking": 3730
                },
                {
                  "player_name": "Fabio Carvalho",
                  "ranking": 3731
                },
                {
                  "player_name": "Facundo Buonanotte",
                  "ranking": 3732
                }
              ],
              "lower": [
                {
                  "player_name": "Mojmír Chytil",
                  "ranking": 3734
                },
                {
                  "player_name": "Kendry Páez",
                  "ranking": 3735
                },
                {
                  "player_name": "Josip Juranović",
                  "ranking": 3736
                },
                {
                  "player_name": "Michel Aebischer",
                  "ranking": 3737
                },
                {
                  "player_name": "Rafael Borré",
                  "ranking": 3738
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.692,
          "history_matches": 7,
          "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": 7,
            "data_confidence": 0.692,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0204,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "minutes": 47.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 3.83,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 7 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Fulham, rel: 0.03, 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.7932,
                "expected_assists": 0.0665,
                "assists": 0.0573,
                "assist_rate": 0.0573,
                "expected_goals": 0.0401,
                "goals": 0.0424,
                "goal_rate": 0.0424,
                "shots_on_target": 0.1256,
                "total_shots": 0.5428,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 52.8396,
                "accurate_pass": 48.7061,
                "duels_won": 4.4482,
                "total_long_balls": 1.896,
                "accurate_long_balls": 1.0344,
                "total_own_half_passes": 28.2733,
                "accurate_own_half_passes": 26.7626,
                "total_opp_half_passes": 24.5663,
                "accurate_opp_half_passes": 21.9435,
                "crosses_total": 0.1948,
                "crosses_accurate": 0.0,
                "touches": 67.8905,
                "possession_lost": 7.6555,
                "dispossessed": 0.6644,
                "duels_lost": 3.8688,
                "aerial_won": 1.1289,
                "aerial_lost": 0.7803,
                "interceptions": 1.848,
                "tackles_won": 0.8592,
                "tackles": 1.8225,
                "clearances": 1.1105,
                "total_contest": 1.6532,
                "won_contest": 0.7304,
                "challenges_lost": 1.0659,
                "fouls": 0.4352,
                "fouls_drawn": 0.7664,
                "blocks": 1.4709,
                "big_chances_created": 0.2696,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.1933,
                "total_progression": 69.1422,
                "progressive_carries": 1.9211,
                "shots_off_target": 0.4172
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.098,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0833,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.2736,
                  "totalShots": 0.6044,
                  "expectedGoals": 0.0211,
                  "expectedAssists": 0.0784,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.793176531791687,
                    "model_output": 0.7932,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1152
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0797
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0636
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0524
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0365
                        }
                      ],
                      "others": -0.0573,
                      "total": 0.7932,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121104
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.082263
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.070859
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.062444
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043901
                        }
                      ],
                      "others_margin": -0.069642
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06652509421110153,
                    "model_output": 0.0665,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.013
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0104
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0096
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0061
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0058
                        }
                      ],
                      "others": -0.0069,
                      "total": 0.0665,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.164345
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.133479
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.122305
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.086061
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.08293
                        }
                      ],
                      "others_margin": -0.099154
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.057332757860422134,
                    "model_output": 0.0573,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0118
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0099
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0064
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0056
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0055
                        }
                      ],
                      "others": -0.0149,
                      "total": 0.0573,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.145377
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.139731
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.092682
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.074346
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.073006
                        }
                      ],
                      "others_margin": -0.230533
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04011597856879234,
                    "model_output": 0.0401,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0304
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0085
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0069
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0068
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.0401,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.390211
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.142582
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.134426
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.131069
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.080208
                        }
                      ],
                      "others_margin": -0.234704
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04241754487156868,
                    "model_output": 0.0424,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0215
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0131
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0091
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.006
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0049
                        }
                      ],
                      "others": -0.0121,
                      "total": 0.0424,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.243574
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.184297
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.152069
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.114941
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.09378
                        }
                      ],
                      "others_margin": -0.249648
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.12560321390628815,
                    "model_output": 0.1256,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0785
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0475
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0326
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0204
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0187
                        }
                      ],
                      "others": -0.0401,
                      "total": 0.1256,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.275404
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.213241
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.178018
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.130154
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119818
                        }
                      ],
                      "others_margin": -0.276856
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5428161025047302,
                    "model_output": 0.5428,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2436
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1141
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0586
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0468
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0417
                        }
                      ],
                      "others": -0.1775,
                      "total": 0.5428,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.243561
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114051
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.058641
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.046823
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.041742
                        }
                      ],
                      "others_margin": -0.177364
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.038383960723877,
                    "model_output": 7.0384,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0798
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0566
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0309
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0301
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0201
                        }
                      ],
                      "others": -0.0352,
                      "total": 7.0384,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.079818
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.056551
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.03086
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.030077
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.020081
                        }
                      ],
                      "others_margin": -0.035056
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "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.0204, quality 0.669)",
              "stats": {
                "key_pass": 0.8094,
                "expected_assists": 0.0679,
                "assists": 0.0585,
                "assist_rate": 0.0585,
                "expected_goals": 0.0409,
                "goals": 0.0433,
                "goal_rate": 0.0433,
                "shots_on_target": 0.1282,
                "total_shots": 0.5539,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.1988,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.1519,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8767,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4441,
                "fouls_drawn": 0.782,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.4257
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0204,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0090)",
              "stats": {
                "key_pass": 0.8094,
                "expected_assists": 0.0679,
                "assists": 0.058,
                "assist_rate": 0.058,
                "expected_goals": 0.0409,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.127,
                "total_shots": 0.5814,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.1519,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.4257
              },
              "params": {
                "blend_weight": 0.009,
                "history_matches": 7,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9404,
                "prior_reliability": 0.0333,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.5539,
                  "after": 0.5814
                },
                {
                  "stat": "totalCross",
                  "before": 0.1988,
                  "after": 0.214
                },
                {
                  "stat": "wonTackle",
                  "before": 0.8767,
                  "after": 0.8858
                },
                {
                  "stat": "wasFouled",
                  "before": 0.782,
                  "after": 0.7749
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8094,
                "expected_assists": 0.0679,
                "assists": 0.058,
                "assist_rate": 0.058,
                "expected_goals": 0.0409,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.127,
                "total_shots": 0.5814,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.1519,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.4257
              },
              "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.8094,
                "expected_assists": 0.0679,
                "assists": 0.058,
                "assist_rate": 0.058,
                "expected_goals": 0.0497,
                "goals": 0.0521,
                "goal_rate": 0.0521,
                "shots_on_target": 0.1544,
                "total_shots": 0.7067,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.3,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.5175,
                "duel_xg_multiplier": 1.2156,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.567,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Matt Grimes",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.567,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.2156,
                  "skill_edge": 0.1027,
                  "height_edge": 0.044,
                  "attacker_skill": 0.704,
                  "defender_skill": 0.4759,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Matt Grimes",
                      "market_value": 5200000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4759
                    }
                  ],
                  "xg_override": 0.0497
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.1519,
                  "after": 1.3
                },
                {
                  "stat": "totalShots",
                  "before": 0.5814,
                  "after": 0.7067
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4257,
                  "after": 0.5175
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.127,
                  "after": 0.1544
                },
                {
                  "stat": "goals",
                  "before": 0.0429,
                  "after": 0.0521
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0409,
                  "after": 0.0497
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.8094,
                "expected_assists": 0.0679,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.0497,
                "goal_rate": 0.0521,
                "goals": 0,
                "shots_on_target": 0.1544,
                "total_shots": 0.7067,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.3,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.5175,
                "duel_xg_multiplier": 1.2156,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.567,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "key_pass": 0.8094,
                "expected_assists": 0.0642,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.047,
                "goal_rate": 0.0521,
                "goals": 0,
                "shots_on_target": 0.1544,
                "total_shots": 0.7067,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.3,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.5175,
                "duel_xg_multiplier": 1.2156,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.567,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0241,
                "creation_factor": 0.916
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.8094,
                "expected_assists": 0.0642,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.047,
                "goal_rate": 0.0521,
                "goals": 0,
                "shots_on_target": 0.1544,
                "total_shots": 0.7067,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.3,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.5175,
                "duel_xg_multiplier": 1.2156,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.567,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0241,
                "creation_factor": 0.916,
                "fifa_overall": 73.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": 3733,
                "fifa_rank": 3319.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.8094,
                "expected_assists": 0.0642,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.047,
                "goal_rate": 0.0521,
                "goals": 0,
                "shots_on_target": 0.1544,
                "total_shots": 0.7067,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.3,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.5175,
                "duel_xg_multiplier": 1.2156,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.567,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0459,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0241,
                "creation_factor": 0.916,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0459,
                "goal_rate": 0.0521,
                "scorer_weight": 0.0481,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0352,
                "finishing_factor": 1.0241,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.8094,
                "expected_assists": 0.0642,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.047,
                "goal_rate": 0.0521,
                "goals": 0,
                "shots_on_target": 0.1544,
                "total_shots": 0.7067,
                "rating": 7.0384,
                "minutes": 84.64,
                "total_pass": 53.9175,
                "accurate_pass": 49.6997,
                "duels_won": 4.5389,
                "total_long_balls": 1.9347,
                "accurate_long_balls": 1.0555,
                "total_own_half_passes": 28.8501,
                "accurate_own_half_passes": 27.3086,
                "total_opp_half_passes": 25.0675,
                "accurate_opp_half_passes": 22.3911,
                "crosses_total": 0.214,
                "crosses_accurate": 0.0,
                "touches": 69.2755,
                "possession_lost": 7.8117,
                "dispossessed": 0.678,
                "duels_lost": 3.9477,
                "aerial_won": 1.3,
                "aerial_lost": 0.7962,
                "interceptions": 1.8857,
                "tackles_won": 0.8858,
                "tackles": 1.8597,
                "clearances": 1.1332,
                "total_contest": 1.6869,
                "won_contest": 0.7453,
                "challenges_lost": 1.0876,
                "fouls": 0.4401,
                "fouls_drawn": 0.7749,
                "blocks": 1.5009,
                "big_chances_created": 0.2751,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 18.5644,
                "total_progression": 70.5527,
                "progressive_carries": 1.9603,
                "shots_off_target": 0.5175,
                "duel_xg_multiplier": 1.2156,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 1.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.567,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Matt Grimes",
                "opponent_faced": "Matt Grimes",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0459,
                "projected_assists": 0,
                "assist_probability": 0.0622,
                "finishing_factor": 1.0241,
                "creation_factor": 0.916,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0622,
                "assist_rate": 0.058,
                "provider_weight": 0.0588,
                "squad_weight_total": 0.758,
                "weight_share": 0.0776,
                "creation_factor": 0.916,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Oscar Bobb": {
          "player_id": 1065216,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 14,
          "height": 174,
          "market_value": 27000000,
          "stats": {
            "expected_goals": 0.1441,
            "goal_rate": 0.1927,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.1127,
            "key_pass": 1,
            "rating": 6.9138,
            "minutes": 72,
            "total_pass": 25,
            "accurate_pass": 20,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 15,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 41,
            "possession_lost": 10.6798,
            "dispossessed": 0.929,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.01,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0494,
            "offsides": 0,
            "ball_carries": 12,
            "total_progression": 55,
            "progressive_carries": 4,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.991,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.194,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
            "opponent_faced": "Ethan Pinnock, Bobby Thomas",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1342,
            "projected_assists": 0,
            "assist_probability": 0.1066,
            "finishing_factor": 1.1991,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 78,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.251,
                "expected_assists": 0.158,
                "total_shots": 5,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 35,
                "accurate_pass": 29,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "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": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 76,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4912,
                "expected_assists": 0.0424,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "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": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 71,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2183,
                "expected_assists": 0.0893,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 24,
                "tackles": 2,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 63,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1348,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 79,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3189,
                "expected_assists": 0.6486,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 4,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 68,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0093,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 67,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2638,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 72,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1912,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 13,
                "key_pass": 2,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 79,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2861,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 28,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 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": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.264,
                "expected_assists": 0.0356,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 15,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3088,
            "combined_rank_score": 1056.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 310.0,
            "sofascore_rating": 7.0333,
            "sofascore_appearances": 6.0,
            "fifa_rank": 1803.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.9138,
            "source_file": "data/player_rankings.csv",
            "player_name": "Oscar Bobb",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Igor Jesus",
                  "ranking": 3083
                },
                {
                  "player_name": "Luis Rioja",
                  "ranking": 3084
                },
                {
                  "player_name": "Roberto Alvarado",
                  "ranking": 3085
                },
                {
                  "player_name": "Callum Wilson",
                  "ranking": 3086
                },
                {
                  "player_name": "Victor Lindelöf",
                  "ranking": 3087
                }
              ],
              "lower": [
                {
                  "player_name": "Emmanuel Agbadou",
                  "ranking": 3089
                },
                {
                  "player_name": "Luis Romo",
                  "ranking": 3090
                },
                {
                  "player_name": "Ryan Sessegnon",
                  "ranking": 3091
                },
                {
                  "player_name": "Albian Hajdari",
                  "ranking": 3092
                },
                {
                  "player_name": "Joe Willock",
                  "ranking": 3093
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.765,
          "history_matches": 30,
          "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": 30,
            "data_confidence": 0.765,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0081,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 133.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1
            },
            "rationale": "XGBoost regressor (F_service) evaluated 30 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Fulham, rel: 0.10, 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.1525,
                "goals": 0.1947,
                "goal_rate": 0.1947,
                "shots_on_target": 0.5283,
                "total_shots": 1.4679,
                "expected_assists": 0.1182,
                "key_pass": 1.3347,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.3882,
                "accurate_pass": 20.3221,
                "duels_won": 3.8823,
                "total_long_balls": 0.5194,
                "accurate_long_balls": 0.0218,
                "total_opp_half_passes": 18.5639,
                "accurate_opp_half_passes": 15.3321,
                "crosses_total": 2.5071,
                "crosses_accurate": 0.6499,
                "touches": 40.442,
                "possession_lost": 10.594,
                "dispossessed": 0.9215,
                "duels_lost": 3.5803,
                "aerial_lost": 0.6111,
                "total_contest": 2.3708,
                "won_contest": 0.9091,
                "ball_recovery": 3.2065,
                "challenges_lost": 0.3973,
                "fouls": 0.2153,
                "fouls_drawn": 1.3185,
                "assists": 0.01,
                "assist_rate": 0.01,
                "interceptions": 0.6306,
                "tackles_won": 0.5351,
                "tackles": 1.4021,
                "clearances": 0.0312,
                "blocks": 0.0,
                "big_chances_created": 0.1109,
                "big_chances_missed": 0.1565,
                "xgot": 0.0524,
                "offsides": 0.1585,
                "ball_carries": 12.2844,
                "total_progression": 54.3526,
                "progressive_carries": 3.4949,
                "shots_off_target": 0.9396
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1512,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1285,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1092,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0928,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0789,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0671,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.057,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0485,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0412,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.035,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.1731,
                  "totalOppositionHalfPasses": 16.7619,
                  "accurateOppositionHalfPasses": 13.7643,
                  "accuratePass": 18.4,
                  "totalShots": 1.4107
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15251769125461578,
                    "model_output": 0.1525,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0645
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0364
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0165
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0144
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0068
                        }
                      ],
                      "others": -0.0358,
                      "total": 0.1525,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.282102
                        },
                        {
                          "name": "goals",
                          "margin": -0.14928
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.076032
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.071362
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.035318
                        }
                      ],
                      "others_margin": -0.210651
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.1947232037782669,
                    "model_output": 0.1947,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0624
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0306
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0112
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0081
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0073
                        }
                      ],
                      "others": -0.0274,
                      "total": 0.1947,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.268789
                        },
                        {
                          "name": "goals",
                          "margin": -0.123004
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.049134
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.036853
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.033325
                        }
                      ],
                      "others_margin": -0.131318
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5283165574073792,
                    "model_output": 0.5283,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1792
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0685
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0555
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0223
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0149
                        }
                      ],
                      "others": -0.0705,
                      "total": 0.5283,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.288361
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.100596
                        },
                        {
                          "name": "goals",
                          "margin": -0.089655
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.03705
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.024566
                        }
                      ],
                      "others_margin": -0.125391
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.4678871631622314,
                    "model_output": 1.4679,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4347
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1259
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0645
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0608
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0417
                        }
                      ],
                      "others": -0.0546,
                      "total": 1.4679,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.434654
                        },
                        {
                          "name": "goals",
                          "margin": -0.125873
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.064483
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.060758
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.041682
                        }
                      ],
                      "others_margin": -0.05472
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.11820738762617111,
                    "model_output": 0.1182,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0143
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0131
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0081
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0068
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0045
                        }
                      ],
                      "others": 0.007,
                      "total": 0.1182,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.200409
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.154399
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.084047
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.065962
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.041677
                        }
                      ],
                      "others_margin": 0.060156
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.3346829414367676,
                    "model_output": 1.3347,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.191
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0882
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0961
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0919
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0759
                        }
                      ],
                      "others": 0.1111,
                      "total": 1.3347,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.247414
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.096359
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.095452
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.083458
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.064069
                        }
                      ],
                      "others_margin": 0.086929
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.913751602172852,
                    "model_output": 6.9138,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0638
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0569
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0196
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0129
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0128
                        }
                      ],
                      "others": 0.0187,
                      "total": 6.9138,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.063782
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.056929
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.019638
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.012863
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.012782
                        }
                      ],
                      "others_margin": 0.018753
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 30,
                  "role_matches": 18,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0081, quality 0.694)",
              "stats": {
                "expected_goals": 0.1538,
                "goals": 0.1963,
                "goal_rate": 0.1963,
                "shots_on_target": 0.5326,
                "total_shots": 1.4798,
                "expected_assists": 0.1192,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5274,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.217,
                "fouls_drawn": 1.3292,
                "assists": 0.0101,
                "assist_rate": 0.0101,
                "interceptions": 0.6357,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1578,
                "xgot": 0.0528,
                "offsides": 0.1598,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9472
              },
              "params": {
                "market_value_eur": 27000000,
                "quality_factor": 0.6941,
                "boost_factor": 1.0081,
                "reference_quality": 0.505,
                "history_matches": 30,
                "history_shrink": 0.1429,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0093)",
              "stats": {
                "expected_goals": 0.1538,
                "goals": 0.1945,
                "goal_rate": 0.1945,
                "shots_on_target": 0.5277,
                "total_shots": 1.4661,
                "expected_assists": 0.1192,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assists": 0.01,
                "assist_rate": 0.01,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1578,
                "xgot": 0.0528,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9472
              },
              "params": {
                "blend_weight": 0.0093,
                "history_matches": 30,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8046,
                "prior_reliability": 0.1,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.4798,
                  "after": 1.4661
                },
                {
                  "stat": "fouls",
                  "before": 0.217,
                  "after": 0.2249
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1538,
                "goals": 0.1945,
                "goal_rate": 0.1945,
                "shots_on_target": 0.5277,
                "total_shots": 1.4749,
                "expected_assists": 0.1192,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assists": 0.01,
                "assist_rate": 0.01,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1578,
                "xgot": 0.0528,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9472
              },
              "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.1524,
                "goals": 0.1927,
                "goal_rate": 0.1927,
                "shots_on_target": 0.523,
                "total_shots": 1.4617,
                "expected_assists": 0.1192,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assists": 0.01,
                "assist_rate": 0.01,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1564,
                "xgot": 0.0523,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9387,
                "duel_xg_multiplier": 0.991,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.194,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.194,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.991,
                  "skill_edge": 0.0539,
                  "height_edge": -0.06,
                  "attacker_skill": 0.6941,
                  "defender_skill": 0.5744,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ethan Pinnock",
                      "market_value": 2800000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4465
                    },
                    {
                      "player": "Bobby Thomas",
                      "market_value": 21000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7022
                    }
                  ],
                  "xg_override": 0.1524
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.4749,
                  "after": 1.4617
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9472,
                  "after": 0.9387
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.1524,
                "goal_rate": 0.1927,
                "goals": 0,
                "shots_on_target": 0.523,
                "total_shots": 1.4617,
                "expected_assists": 0.1192,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assist_rate": 0.01,
                "assists": 0,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1564,
                "xgot": 0.0523,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9387,
                "duel_xg_multiplier": 0.991,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.194,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.1441,
                "goal_rate": 0.1927,
                "goals": 0,
                "shots_on_target": 0.523,
                "total_shots": 1.4617,
                "expected_assists": 0.1127,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assist_rate": 0.01,
                "assists": 0,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1564,
                "xgot": 0.0494,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9387,
                "duel_xg_multiplier": 0.991,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.194,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1991,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1524,
                  "after": 0.1441
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1192,
                  "after": 0.1127
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.1441,
                "goal_rate": 0.1927,
                "goals": 0,
                "shots_on_target": 0.523,
                "total_shots": 1.4617,
                "expected_assists": 0.1127,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assist_rate": 0.01,
                "assists": 0,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1564,
                "xgot": 0.0494,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9387,
                "duel_xg_multiplier": 0.991,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.194,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1991,
                "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": 3088,
                "fifa_rank": 1803.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.1441,
                "goal_rate": 0.1927,
                "goals": 0,
                "shots_on_target": 0.523,
                "total_shots": 1.4617,
                "expected_assists": 0.1127,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assist_rate": 0.01,
                "assists": 0,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1564,
                "xgot": 0.0494,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9387,
                "duel_xg_multiplier": 0.991,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.194,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1342,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1991,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1342,
                "goal_rate": 0.1927,
                "scorer_weight": 0.1728,
                "squad_weight_total": 1.3663,
                "weight_share": 0.1265,
                "finishing_factor": 1.1991,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.1441,
                "goal_rate": 0.1927,
                "goals": 0,
                "shots_on_target": 0.523,
                "total_shots": 1.4617,
                "expected_assists": 0.1127,
                "key_pass": 1.3455,
                "rating": 6.9138,
                "minutes": 72.41,
                "total_pass": 24.5857,
                "accurate_pass": 20.4867,
                "duels_won": 3.9137,
                "total_long_balls": 0.5236,
                "accurate_long_balls": 0.022,
                "total_opp_half_passes": 18.7143,
                "accurate_opp_half_passes": 15.4563,
                "crosses_total": 2.5239,
                "crosses_accurate": 0.6552,
                "touches": 40.7696,
                "possession_lost": 10.6798,
                "dispossessed": 0.929,
                "duels_lost": 3.6093,
                "aerial_lost": 0.616,
                "total_contest": 2.39,
                "won_contest": 0.9165,
                "ball_recovery": 3.2325,
                "challenges_lost": 0.4005,
                "fouls": 0.2249,
                "fouls_drawn": 1.3318,
                "assist_rate": 0.01,
                "assists": 0,
                "interceptions": 0.6398,
                "tackles_won": 0.5394,
                "tackles": 1.4135,
                "clearances": 0.0315,
                "blocks": 0.0,
                "big_chances_created": 0.1118,
                "big_chances_missed": 0.1564,
                "xgot": 0.0494,
                "offsides": 0.1583,
                "ball_carries": 12.3839,
                "total_progression": 54.7929,
                "progressive_carries": 3.5232,
                "shots_off_target": 0.9387,
                "duel_xg_multiplier": 0.991,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.194,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1342,
                "projected_assists": 0,
                "assist_probability": 0.1066,
                "finishing_factor": 1.1991,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1066,
                "assist_rate": 0.01,
                "provider_weight": 0.0902,
                "squad_weight_total": 0.758,
                "weight_share": 0.1189,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Josh King": {
          "player_id": 1546231,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 24,
          "height": 172,
          "market_value": 41000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.1333,
            "assist_rate": 0.1028,
            "assists": 0,
            "expected_goals": 0.1843,
            "goal_rate": 0.2368,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 7.0115,
            "minutes": 77,
            "total_pass": 29,
            "accurate_pass": 24,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 43,
            "possession_lost": 9.8231,
            "dispossessed": 0.7715,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 3,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2343,
            "ball_carries": 19,
            "total_progression": 72,
            "progressive_carries": 4,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0926,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.303,
            "pressing_faced": "LOW",
            "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Matt Grimes, Caleb Yirenkyi",
            "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1683,
            "projected_assists": 0,
            "assist_probability": 0.1248,
            "finishing_factor": 1.1711,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 78,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1905,
                "expected_assists": 0.3214,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 50,
                "accurate_pass": 42,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 76,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2826,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 2,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 80,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3752,
                "expected_assists": 0.0344,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 28,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 77,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2125,
                "expected_assists": 0.0876,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "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": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3132,
                "expected_assists": 0.2695,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 37,
                "accurate_pass": 33,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4696,
                "expected_assists": 0.035,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 30,
                "tackles": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1714,
                "expected_assists": 0.0363,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 28,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "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": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 18,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0943,
                "expected_assists": 0.0139,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 23,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0199,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 16,
                "key_pass": 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": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 14,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0643,
                "expected_assists": 0.0288,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 7,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3080,
            "combined_rank_score": 1046.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 809.0,
            "sofascore_rating": 6.6125,
            "sofascore_appearances": 32.0,
            "fifa_rank": 1284.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0115,
            "source_file": "data/player_rankings.csv",
            "player_name": "Joshua King",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Liam Delap",
                  "ranking": 3075
                },
                {
                  "player_name": "Leopold Querfeld",
                  "ranking": 3076
                },
                {
                  "player_name": "Daizen Maeda",
                  "ranking": 3077
                },
                {
                  "player_name": "Javi Galán",
                  "ranking": 3078
                },
                {
                  "player_name": "Matt O'Riley",
                  "ranking": 3079
                }
              ],
              "lower": [
                {
                  "player_name": "Aitor Ruibal",
                  "ranking": 3081
                },
                {
                  "player_name": "Artem Bondarenko",
                  "ranking": 3082
                },
                {
                  "player_name": "Igor Jesus",
                  "ranking": 3083
                },
                {
                  "player_name": "Luis Rioja",
                  "ranking": 3084
                },
                {
                  "player_name": "Roberto Alvarado",
                  "ranking": 3085
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 39,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 39,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0096,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 39 historical appearances across 8 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.6141,
                "expected_assists": 0.1397,
                "assists": 0.1018,
                "assist_rate": 0.1018,
                "expected_goals": 0.1767,
                "goals": 0.2147,
                "goal_rate": 0.2147,
                "shots_on_target": 0.8537,
                "total_shots": 2.0014,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.062,
                "accurate_pass": 24.1648,
                "duels_won": 3.993,
                "total_long_balls": 1.153,
                "accurate_long_balls": 0.5052,
                "total_own_half_passes": 10.8883,
                "accurate_own_half_passes": 10.2321,
                "total_opp_half_passes": 18.1737,
                "accurate_opp_half_passes": 13.9327,
                "crosses_total": 1.3135,
                "crosses_accurate": 0.1543,
                "touches": 42.3374,
                "possession_lost": 9.7297,
                "dispossessed": 0.7642,
                "duels_lost": 3.6885,
                "aerial_won": 0.1312,
                "aerial_lost": 0.4775,
                "interceptions": 0.159,
                "tackles_won": 0.6031,
                "tackles": 0.954,
                "clearances": 0.5376,
                "total_contest": 2.5239,
                "won_contest": 1.1221,
                "challenges_lost": 0.3871,
                "fouls": 0.8163,
                "fouls_drawn": 1.7857,
                "blocks": 0.1585,
                "big_chances_created": 0.3571,
                "big_chances_missed": 0.3812,
                "xgot": 0.2246,
                "ball_carries": 18.8818,
                "total_progression": 71.7276,
                "progressive_carries": 3.6586,
                "shots_off_target": 1.1477
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 8.1
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.5545,
                  "totalShots": 1.8059,
                  "expectedGoals": 0.1775,
                  "expectedAssists": 0.1283,
                  "onTargetScoringAttempt": 0.9974
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.614139437675476,
                    "model_output": 1.6141,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1148
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.1076
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1017
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0822
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0454
                        }
                      ],
                      "others": 0.2679,
                      "total": 1.6141,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120705
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.101284
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.087183
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.065314
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.034296
                        }
                      ],
                      "others_margin": 0.181527
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.13966716825962067,
                    "model_output": 0.1397,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0105
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0074
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0053
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0054
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.004
                        }
                      ],
                      "others": 0.0212,
                      "total": 0.1397,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.115469
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.073805
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.049527
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.048532
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.034715
                        }
                      ],
                      "others_margin": 0.164179
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.10179533809423447,
                    "model_output": 0.1018,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.007
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0038
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.1018,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.077343
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.067089
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.06134
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.040998
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.036356
                        }
                      ],
                      "others_margin": -0.048657
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.17666207253932953,
                    "model_output": 0.1767,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0306
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0212
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.015
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0081
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0076
                        }
                      ],
                      "others": 0.0002,
                      "total": 0.1767,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.281702
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.157513
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.09778
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.04931
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.044284
                        }
                      ],
                      "others_margin": 0.000813
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.21468482911586761,
                    "model_output": 0.2147,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0243
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0249
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0192
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.017
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0162
                        }
                      ],
                      "others": 0.0138,
                      "total": 0.2147,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.219274
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.183608
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.12146
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.096718
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.084068
                        }
                      ],
                      "others_margin": 0.065733
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8536616563796997,
                    "model_output": 0.8537,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0987
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0933
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0723
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0441
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0365
                        }
                      ],
                      "others": 0.1828,
                      "total": 0.8537,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.264479
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.198629
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.130583
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.072073
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.056007
                        }
                      ],
                      "others_margin": 0.240781
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.001347780227661,
                    "model_output": 2.0013,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.4556
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1751
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0752
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0484
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0476
                        }
                      ],
                      "others": 0.2025,
                      "total": 2.0013,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.455577
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.175094
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.075187
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.048353
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.047627
                        }
                      ],
                      "others_margin": 0.202613
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.011496067047119,
                    "model_output": 7.0115,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0778
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0351
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0265
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0247
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0185
                        }
                      ],
                      "others": 0.0098,
                      "total": 7.0115,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.077832
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.035055
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.026491
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.024706
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.018483
                        }
                      ],
                      "others_margin": 0.009843
                    }
                  }
                ],
                "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.0096, quality 0.786)",
              "stats": {
                "key_pass": 1.6296,
                "expected_assists": 0.141,
                "assists": 0.1028,
                "assist_rate": 0.1028,
                "expected_goals": 0.1784,
                "goals": 0.2167,
                "goal_rate": 0.2167,
                "shots_on_target": 0.8619,
                "total_shots": 2.0206,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.1325,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.3849,
                "xgot": 0.2268,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.1587
              },
              "params": {
                "market_value_eur": 41000000,
                "quality_factor": 0.7859,
                "boost_factor": 1.0096,
                "reference_quality": 0.505,
                "history_matches": 39,
                "history_shrink": 0.1136,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.6296,
                "expected_assists": 0.141,
                "assists": 0.1028,
                "assist_rate": 0.1028,
                "expected_goals": 0.1784,
                "goals": 0.2167,
                "goal_rate": 0.2167,
                "shots_on_target": 0.8619,
                "total_shots": 2.0206,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.1325,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.3849,
                "xgot": 0.2268,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.1587
              },
              "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.6296,
                "expected_assists": 0.141,
                "assists": 0.1028,
                "assist_rate": 0.1028,
                "expected_goals": 0.1949,
                "goals": 0.2368,
                "goal_rate": 0.2368,
                "shots_on_target": 0.9417,
                "total_shots": 2.2077,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.8,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.4205,
                "xgot": 0.2478,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.266,
                "duel_xg_multiplier": 1.0926,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.303,
                "pressing_faced": "LOW",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Matt Grimes, Caleb Yirenkyi",
                "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
                  "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                  "duel_win_rate": 0.303,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0926,
                  "skill_edge": 0.095,
                  "height_edge": -0.032,
                  "attacker_skill": 0.7964,
                  "defender_skill": 0.5852,
                  "attacker_role": "CAM",
                  "attacker_mv_price_index": 0.95,
                  "defender_adjusted_parts": [
                    {
                      "player": "Matt Grimes",
                      "market_value": 5200000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4759
                    },
                    {
                      "player": "Caleb Yirenkyi",
                      "market_value": 23000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.6946
                    }
                  ],
                  "xg_override": 0.1949
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.1325,
                  "after": 0.8
                },
                {
                  "stat": "totalShots",
                  "before": 2.0206,
                  "after": 2.2077
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.1587,
                  "after": 1.266
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8619,
                  "after": 0.9417
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.3849,
                  "after": 0.4205
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2268,
                  "after": 0.2478
                },
                {
                  "stat": "goals",
                  "before": 0.2167,
                  "after": 0.2368
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1784,
                  "after": 0.1949
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 1.6296,
                "expected_assists": 0.141,
                "assist_rate": 0.1028,
                "assists": 0,
                "expected_goals": 0.1949,
                "goal_rate": 0.2368,
                "goals": 0,
                "shots_on_target": 0.9417,
                "total_shots": 2.2077,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.8,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.4205,
                "xgot": 0.2478,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.266,
                "duel_xg_multiplier": 1.0926,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.303,
                "pressing_faced": "LOW",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Matt Grimes, Caleb Yirenkyi",
                "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "key_pass": 1.6296,
                "expected_assists": 0.1333,
                "assist_rate": 0.1028,
                "assists": 0,
                "expected_goals": 0.1843,
                "goal_rate": 0.2368,
                "goals": 0,
                "shots_on_target": 0.9417,
                "total_shots": 2.2077,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.8,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.4205,
                "xgot": 0.2343,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.266,
                "duel_xg_multiplier": 1.0926,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.303,
                "pressing_faced": "LOW",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Matt Grimes, Caleb Yirenkyi",
                "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1711,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1949,
                  "after": 0.1843
                },
                {
                  "stat": "expected_assists",
                  "before": 0.141,
                  "after": 0.1333
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 78.0)",
              "stats": {
                "key_pass": 1.6296,
                "expected_assists": 0.1333,
                "assist_rate": 0.1028,
                "assists": 0,
                "expected_goals": 0.1843,
                "goal_rate": 0.2368,
                "goals": 0,
                "shots_on_target": 0.9417,
                "total_shots": 2.2077,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.8,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.4205,
                "xgot": 0.2343,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.266,
                "duel_xg_multiplier": 1.0926,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.303,
                "pressing_faced": "LOW",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Matt Grimes, Caleb Yirenkyi",
                "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1711,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3080,
                "fifa_rank": 1284.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.6296,
                "expected_assists": 0.1333,
                "assist_rate": 0.1028,
                "assists": 0,
                "expected_goals": 0.1843,
                "goal_rate": 0.2368,
                "goals": 0,
                "shots_on_target": 0.9417,
                "total_shots": 2.2077,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.8,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.4205,
                "xgot": 0.2343,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.266,
                "duel_xg_multiplier": 1.0926,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.303,
                "pressing_faced": "LOW",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Matt Grimes, Caleb Yirenkyi",
                "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1683,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1711,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1683,
                "goal_rate": 0.2368,
                "scorer_weight": 0.2158,
                "squad_weight_total": 1.3663,
                "weight_share": 0.158,
                "finishing_factor": 1.1711,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.6296,
                "expected_assists": 0.1333,
                "assist_rate": 0.1028,
                "assists": 0,
                "expected_goals": 0.1843,
                "goal_rate": 0.2368,
                "goals": 0,
                "shots_on_target": 0.9417,
                "total_shots": 2.2077,
                "rating": 7.0115,
                "minutes": 77.06,
                "total_pass": 29.341,
                "accurate_pass": 24.3968,
                "duels_won": 4.0313,
                "total_long_balls": 1.1641,
                "accurate_long_balls": 0.51,
                "total_own_half_passes": 10.9928,
                "accurate_own_half_passes": 10.3303,
                "total_opp_half_passes": 18.3482,
                "accurate_opp_half_passes": 14.0665,
                "crosses_total": 1.3261,
                "crosses_accurate": 0.1558,
                "touches": 42.7438,
                "possession_lost": 9.8231,
                "dispossessed": 0.7715,
                "duels_lost": 3.7239,
                "aerial_won": 0.8,
                "aerial_lost": 0.4821,
                "interceptions": 0.1605,
                "tackles_won": 0.6089,
                "tackles": 0.9632,
                "clearances": 0.5428,
                "total_contest": 2.5481,
                "won_contest": 1.1329,
                "challenges_lost": 0.3908,
                "fouls": 0.8241,
                "fouls_drawn": 1.8028,
                "blocks": 0.16,
                "big_chances_created": 0.3605,
                "big_chances_missed": 0.4205,
                "xgot": 0.2343,
                "ball_carries": 19.0631,
                "total_progression": 72.4162,
                "progressive_carries": 3.6937,
                "shots_off_target": 1.266,
                "duel_xg_multiplier": 1.0926,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.303,
                "pressing_faced": "LOW",
                "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Matt Grimes, Caleb Yirenkyi",
                "opponent_faced": "Matt Grimes, Caleb Yirenkyi",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1683,
                "projected_assists": 0,
                "assist_probability": 0.1248,
                "finishing_factor": 1.1711,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1248,
                "assist_rate": 0.1028,
                "provider_weight": 0.1066,
                "squad_weight_total": 0.758,
                "weight_share": 0.1407,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Gonzalo García": {
          "player_id": 1402716,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 7,
          "height": 182,
          "market_value": 36000000,
          "stats": {
            "expected_goals": 0.3354,
            "goal_rate": 0.3264,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0685,
            "key_pass": 1,
            "rating": 6.7185,
            "minutes": 82,
            "total_pass": 19,
            "accurate_pass": 15,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 31,
            "possession_lost": 8.5575,
            "dispossessed": 0.6101,
            "duels_lost": 6,
            "aerial_lost": 3,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.188,
            "offsides": 0,
            "ball_carries": 7,
            "total_progression": 8,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0745,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.251,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
            "opponent_faced": "Ethan Pinnock, Bobby Thomas",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.2849,
            "projected_assists": 0,
            "assist_probability": 0.0662,
            "finishing_factor": 0.9301,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 85,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4618,
                "expected_assists": 0.1448,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 22,
                "key_pass": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 87,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6667,
                "expected_assists": 0.0148,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 80,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6918,
                "expected_assists": 0.3258,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 9,
                "accurate_pass": 6,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 77,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2043,
                "expected_assists": 0.0268,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 8,
                "key_pass": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4426,
                "expected_assists": 0.2017,
                "total_shots": 5,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2697,
                "expected_assists": 0.0129,
                "total_shots": 3,
                "total_pass": 19,
                "accurate_pass": 13,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7335,
                "expected_assists": 0.0065,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 27,
                "accurate_pass": 23,
                "tackles": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083731,
              "match_date": "2026-05-23",
              "home_team": "Real Madrid",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Madrid",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 74,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4699,
                "expected_assists": 0.0321,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 13,
                "key_pass": 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": 14083702,
              "match_date": "2026-05-17",
              "home_team": "Sevilla",
              "away_team": "Real Madrid",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Madrid",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 13,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0049,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 5
              },
              "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": 14083649,
              "match_date": "2026-05-14",
              "home_team": "Real Madrid",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Madrid",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 69,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1444,
                "expected_assists": 0.2793,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 13,
                "key_pass": 3,
                "clearances": 3,
                "aerial_won": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1573,
            "combined_rank_score": 873.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 641.0,
            "sofascore_rating": 6.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1106.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7185,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gonzalo García",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alan Minda",
                  "ranking": 1568
                },
                {
                  "player_name": "Éric Davis",
                  "ranking": 1569
                },
                {
                  "player_name": "Javier Boñar",
                  "ranking": 1570
                },
                {
                  "player_name": "Ken Sema",
                  "ranking": 1571
                },
                {
                  "player_name": "Julio Báez",
                  "ranking": 1572
                }
              ],
              "lower": [
                {
                  "player_name": "Yilmar Velázquez",
                  "ranking": 1574
                },
                {
                  "player_name": "Mauricio Vera",
                  "ranking": 1575
                },
                {
                  "player_name": "Jardel",
                  "ranking": 1576
                },
                {
                  "player_name": "Kim Dong-wook",
                  "ranking": 1577
                },
                {
                  "player_name": "Viktor Đukanović",
                  "ranking": 1578
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 37,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 37,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.009,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "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": 3.0,
              "shots_on_target_pct": 16.7,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (F_service) evaluated 37 historical appearances across 7 target models; FBref 2026-2027 prior blended (Premier League, Fulham, rel: 0.13, gls/90: 0.5, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3272,
                "goals": 0.2996,
                "goal_rate": 0.2996,
                "shots_on_target": 0.8907,
                "total_shots": 2.0743,
                "expected_assists": 0.0718,
                "key_pass": 0.8511,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.7515,
                "accurate_pass": 15.1223,
                "duels_won": 3.0441,
                "total_long_balls": 0.4132,
                "accurate_long_balls": 0.1377,
                "total_opp_half_passes": 12.504,
                "accurate_opp_half_passes": 10.0253,
                "crosses_total": 0.4849,
                "crosses_accurate": 0.0,
                "touches": 30.568,
                "possession_lost": 8.4812,
                "dispossessed": 0.6047,
                "duels_lost": 5.7671,
                "aerial_lost": 2.5365,
                "total_contest": 1.5376,
                "won_contest": 0.5355,
                "ball_recovery": 1.4225,
                "challenges_lost": 0.6191,
                "fouls": 1.0047,
                "fouls_drawn": 0.3675,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1436,
                "tackles_won": 0.1651,
                "tackles": 0.2533,
                "clearances": 0.9914,
                "blocks": 0.0719,
                "big_chances_created": 0.2791,
                "big_chances_missed": 0.8177,
                "xgot": 0.1834,
                "offsides": 0.0846,
                "ball_carries": 7.1831,
                "total_progression": 7.7925,
                "progressive_carries": 1.0993,
                "shots_off_target": 1.1836
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Athletic Club",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Sevilla",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Real Oviedo",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.4119,
                  "totalOppositionHalfPasses": 10.752,
                  "accurateOppositionHalfPasses": 8.5661,
                  "accuratePass": 13.1413,
                  "totalShots": 2.0215
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.3271801471710205,
                    "model_output": 0.3272,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0759
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0341
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0138
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0111
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0078
                        }
                      ],
                      "others": 0.0022,
                      "total": 0.3272,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.324671
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.117377
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.043914
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.033837
                        },
                        {
                          "name": "goals",
                          "margin": -0.023656
                        }
                      ],
                      "others_margin": 0.006547
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.29955267906188965,
                    "model_output": 0.2996,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0555
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0296
                        },
                        {
                          "name": "goals",
                          "contribution": -0.023
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0173
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0119
                        }
                      ],
                      "others": 0.006,
                      "total": 0.2996,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.242382
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.108867
                        },
                        {
                          "name": "goals",
                          "margin": -0.083242
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.063446
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.04135
                        }
                      ],
                      "others_margin": 0.019714
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8907186985015869,
                    "model_output": 0.8907,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1656
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0572
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0463
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0391
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0397
                        }
                      ],
                      "others": 0.0992,
                      "total": 0.8907,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.269176
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.078309
                        },
                        {
                          "name": "goals",
                          "margin": -0.06289
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.053472
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.051512
                        }
                      ],
                      "others_margin": 0.117958
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.0742931365966797,
                    "model_output": 2.0743,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5388
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1412
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0757
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0458
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0316
                        }
                      ],
                      "others": 0.0119,
                      "total": 2.0743,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.53875
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.141202
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.075698
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.045808
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.031623
                        }
                      ],
                      "others_margin": 0.011858
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07177774608135223,
                    "model_output": 0.0718,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0187
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0088
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0085
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.008
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0046
                        }
                      ],
                      "others": -0.0144,
                      "total": 0.0718,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.254453
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.112522
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.107935
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.092757
                        },
                        {
                          "name": "rating",
                          "margin": -0.052295
                        }
                      ],
                      "others_margin": -0.182544
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.8511412143707275,
                    "model_output": 0.8511,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2171
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.067
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0465
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0395
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0345
                        }
                      ],
                      "others": -0.086,
                      "total": 0.8511,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.276886
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.071985
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.047119
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.03988
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.036156
                        }
                      ],
                      "others_margin": -0.096145
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.71847677230835,
                    "model_output": 6.7185,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0534
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0376
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.017
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0144
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0141
                        }
                      ],
                      "others": -0.0483,
                      "total": 6.7185,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.053356
                        },
                        {
                          "name": "rating",
                          "margin": -0.037579
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.017017
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.014401
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.014125
                        }
                      ],
                      "others_margin": -0.048287
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 37,
                  "role_matches": 16,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0090, quality 0.758)",
              "stats": {
                "expected_goals": 0.3301,
                "goals": 0.3022,
                "goal_rate": 0.3022,
                "shots_on_target": 0.8987,
                "total_shots": 2.093,
                "expected_assists": 0.0724,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.4893,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0137,
                "fouls_drawn": 0.3708,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1449,
                "tackles_won": 0.1666,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8251,
                "xgot": 0.1851,
                "offsides": 0.0854,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.1943
              },
              "params": {
                "market_value_eur": 36000000,
                "quality_factor": 0.7581,
                "boost_factor": 1.009,
                "reference_quality": 0.505,
                "history_matches": 37,
                "history_shrink": 0.119,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0103)",
              "stats": {
                "expected_goals": 0.3301,
                "goals": 0.3038,
                "goal_rate": 0.3038,
                "shots_on_target": 0.8941,
                "total_shots": 2.0997,
                "expected_assists": 0.0724,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8251,
                "xgot": 0.1851,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.1943
              },
              "params": {
                "blend_weight": 0.0103,
                "history_matches": 37,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9136,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 1.0137,
                  "after": 1.0221
                },
                {
                  "stat": "totalShots",
                  "before": 2.093,
                  "after": 2.0997
                },
                {
                  "stat": "wasFouled",
                  "before": 0.3708,
                  "after": 0.3764
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3301,
                "goals": 0.3038,
                "goal_rate": 0.3038,
                "shots_on_target": 0.8941,
                "total_shots": 2.0997,
                "expected_assists": 0.0724,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8251,
                "xgot": 0.1851,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.1943
              },
              "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.3547,
                "goals": 0.3264,
                "goal_rate": 0.3264,
                "shots_on_target": 0.9607,
                "total_shots": 2.2561,
                "expected_assists": 0.0724,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8866,
                "xgot": 0.1989,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.2833,
                "duel_xg_multiplier": 1.0745,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.251,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.251,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0745,
                  "skill_edge": 0.0827,
                  "height_edge": -0.032,
                  "attacker_skill": 0.7581,
                  "defender_skill": 0.5744,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Ethan Pinnock",
                      "market_value": 2800000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4465
                    },
                    {
                      "player": "Bobby Thomas",
                      "market_value": 21000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7022
                    }
                  ],
                  "xg_override": 0.3547
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.0997,
                  "after": 2.2561
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.1943,
                  "after": 1.2833
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8941,
                  "after": 0.9607
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.8251,
                  "after": 0.8866
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3301,
                  "after": 0.3547
                },
                {
                  "stat": "goals",
                  "before": 0.3038,
                  "after": 0.3264
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1851,
                  "after": 0.1989
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.3547,
                "goal_rate": 0.3264,
                "goals": 0,
                "shots_on_target": 0.9607,
                "total_shots": 2.2561,
                "expected_assists": 0.0724,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8866,
                "xgot": 0.1989,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.2833,
                "duel_xg_multiplier": 1.0745,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.251,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.3354,
                "goal_rate": 0.3264,
                "goals": 0,
                "shots_on_target": 0.9607,
                "total_shots": 2.2561,
                "expected_assists": 0.0685,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8866,
                "xgot": 0.188,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.2833,
                "duel_xg_multiplier": 1.0745,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.251,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9301,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.3547,
                  "after": 0.3354
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.3354,
                "goal_rate": 0.3264,
                "goals": 0,
                "shots_on_target": 0.9607,
                "total_shots": 2.2561,
                "expected_assists": 0.0685,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8866,
                "xgot": 0.188,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.2833,
                "duel_xg_multiplier": 1.0745,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.251,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9301,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1573,
                "fifa_rank": 1106.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.3354,
                "goal_rate": 0.3264,
                "goals": 1,
                "shots_on_target": 0.9607,
                "total_shots": 2.2561,
                "expected_assists": 0.0685,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8866,
                "xgot": 0.188,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.2833,
                "duel_xg_multiplier": 1.0745,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.251,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2849,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9301,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.2849,
                "goal_rate": 0.3264,
                "scorer_weight": 0.312,
                "squad_weight_total": 1.3663,
                "weight_share": 0.2283,
                "finishing_factor": 0.9301,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.3354,
                "goal_rate": 0.3264,
                "goals": 1,
                "shots_on_target": 0.9607,
                "total_shots": 2.2561,
                "expected_assists": 0.0685,
                "key_pass": 0.8588,
                "rating": 6.7185,
                "minutes": 82.22,
                "total_pass": 18.9203,
                "accurate_pass": 15.2584,
                "duels_won": 3.0715,
                "total_long_balls": 0.4169,
                "accurate_long_balls": 0.1389,
                "total_opp_half_passes": 12.6165,
                "accurate_opp_half_passes": 10.1155,
                "crosses_total": 0.489,
                "crosses_accurate": 0.0,
                "touches": 30.8431,
                "possession_lost": 8.5575,
                "dispossessed": 0.6101,
                "duels_lost": 5.819,
                "aerial_lost": 2.5593,
                "total_contest": 1.5514,
                "won_contest": 0.5403,
                "ball_recovery": 1.4353,
                "challenges_lost": 0.6247,
                "fouls": 1.0221,
                "fouls_drawn": 0.3764,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1434,
                "tackles_won": 0.1649,
                "tackles": 0.2556,
                "clearances": 1.0003,
                "blocks": 0.0725,
                "big_chances_created": 0.2816,
                "big_chances_missed": 0.8866,
                "xgot": 0.188,
                "offsides": 0.0845,
                "ball_carries": 7.2477,
                "total_progression": 7.8626,
                "progressive_carries": 1.1092,
                "shots_off_target": 1.2833,
                "duel_xg_multiplier": 1.0745,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.251,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ethan Pinnock, Bobby Thomas",
                "opponent_faced": "Ethan Pinnock, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.2849,
                "projected_assists": 0,
                "assist_probability": 0.0662,
                "finishing_factor": 0.9301,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0662,
                "assist_rate": 0.0,
                "provider_weight": 0.0548,
                "squad_weight_total": 0.758,
                "weight_share": 0.0723,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Alex Iwobi": {
          "player_id": 352770,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 17,
          "height": 183,
          "market_value": 21000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.2094,
            "assist_rate": 0.1322,
            "assists": 1,
            "expected_goals": 0.1485,
            "goal_rate": 0.211,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 7.3979,
            "minutes": 83,
            "total_pass": 56,
            "accurate_pass": 50,
            "duels_won": 2,
            "total_long_balls": 4,
            "accurate_long_balls": 3,
            "total_own_half_passes": 23,
            "accurate_own_half_passes": 21,
            "total_opp_half_passes": 33,
            "accurate_opp_half_passes": 29,
            "crosses_total": 4,
            "crosses_accurate": 2,
            "touches": 71,
            "possession_lost": 11.9818,
            "dispossessed": 0.75,
            "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": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0856,
            "ball_carries": 24,
            "total_progression": 84,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9828,
            "dribbles_attempted": 4,
            "dribbles_successful": 1.6,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.468,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Milan van Ewijk",
            "opponent_faced": "Milan van Ewijk",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.138,
            "projected_assists": 1,
            "assist_probability": 0.1889,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 9.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2786,
                "expected_assists": 0.9335,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 65,
                "accurate_pass": 60,
                "key_pass": 3,
                "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": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 87,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1916,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 45,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 71,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.193,
                "expected_assists": 0.4101,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 38,
                "accurate_pass": 38,
                "key_pass": 5,
                "tackles": 1,
                "tackles_won": 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": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 77,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1477,
                "expected_assists": 0.1087,
                "total_shots": 2,
                "total_pass": 38,
                "accurate_pass": 32,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 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": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 83,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.036,
                "expected_assists": 0.2573,
                "total_shots": 1,
                "total_pass": 70,
                "accurate_pass": 64,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0147,
                "expected_assists": 0.4028,
                "total_shots": 1,
                "total_pass": 60,
                "accurate_pass": 56,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0385,
                "total_shots": 0,
                "total_pass": 92,
                "accurate_pass": 83,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "duels_won": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2582,
                "expected_assists": 0.1714,
                "total_shots": 6,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 53,
                "accurate_pass": 42,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 67,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2356,
                "expected_assists": 0.1111,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 53,
                "accurate_pass": 47,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025031,
              "match_date": "2026-04-18",
              "home_team": "Brentford",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Brentford",
              "stats": {
                "minutes": 43,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0329,
                "expected_assists": 0.0674,
                "total_shots": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1041,
            "combined_rank_score": 471.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 277.0,
            "sofascore_rating": 7.069,
            "sofascore_appearances": 29.0,
            "fifa_rank": 665.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.3979,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alex Iwobi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Anthony Elanga",
                  "ranking": 1036
                },
                {
                  "player_name": "Sander Berge",
                  "ranking": 1037
                },
                {
                  "player_name": "Rustam Nartazhiev",
                  "ranking": 1038
                },
                {
                  "player_name": "Christian Bravo",
                  "ranking": 1039
                },
                {
                  "player_name": "Julián Quiñones",
                  "ranking": 1040
                }
              ],
              "lower": [
                {
                  "player_name": "Lee Ji-Hoon",
                  "ranking": 1042
                },
                {
                  "player_name": "Narimonjon Akhmadjonov",
                  "ranking": 1043
                },
                {
                  "player_name": "Stevan Jovetić",
                  "ranking": 1044
                },
                {
                  "player_name": "Ricardo Rodríguez",
                  "ranking": 1045
                },
                {
                  "player_name": "Alan Cariús",
                  "ranking": 1046
                }
              ]
            }
          },
          "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.005,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 36 historical appearances across 8 target models; FBref 2026-2027 prior blended (Premier League, Fulham, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 2.214,
                "expected_assists": 0.2204,
                "assists": 0.1329,
                "assist_rate": 0.1329,
                "expected_goals": 0.1591,
                "goals": 0.2159,
                "goal_rate": 0.2159,
                "shots_on_target": 0.6667,
                "total_shots": 2.0082,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.5227,
                "accurate_pass": 49.5885,
                "duels_won": 2.2412,
                "total_long_balls": 4.075,
                "accurate_long_balls": 3.3301,
                "total_own_half_passes": 22.5576,
                "accurate_own_half_passes": 20.9818,
                "total_opp_half_passes": 32.9652,
                "accurate_opp_half_passes": 28.6068,
                "crosses_total": 4.3704,
                "crosses_accurate": 1.7362,
                "touches": 70.1741,
                "possession_lost": 11.9222,
                "dispossessed": 0.7463,
                "duels_lost": 1.9751,
                "aerial_won": 0.0829,
                "aerial_lost": 0.1267,
                "interceptions": 0.352,
                "tackles_won": 0.6778,
                "tackles": 0.9367,
                "clearances": 0.4735,
                "total_contest": 1.4578,
                "won_contest": 0.8426,
                "challenges_lost": 0.2144,
                "fouls": 0.2723,
                "fouls_drawn": 0.3839,
                "blocks": 0.0487,
                "big_chances_created": 0.7807,
                "big_chances_missed": 0.2726,
                "xgot": 0.0916,
                "ball_carries": 24.2034,
                "total_progression": 83.5227,
                "progressive_carries": 2.2613,
                "shots_off_target": 1.3415
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 9.8
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Brentford",
                    "minutes": 43.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 1.0995,
                  "totalShots": 1.9426,
                  "expectedGoals": 0.1147,
                  "expectedAssists": 0.3244,
                  "onTargetScoringAttempt": 0.642
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 2.213953733444214,
                    "model_output": 2.214,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.2153
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1491
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1468
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0834
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0882
                        }
                      ],
                      "others": 0.6367,
                      "total": 2.214,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.21568
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.126053
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110279
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.057635
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.05756
                        }
                      ],
                      "others_margin": 0.33908
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.22042611241340637,
                    "model_output": 0.2204,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0157
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0136
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0124
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0103
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0083
                        }
                      ],
                      "others": 0.0742,
                      "total": 0.2204,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": 0.167565
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.125549
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.10194
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.07804
                        },
                        {
                          "name": "rating",
                          "margin": 0.058311
                        }
                      ],
                      "others_margin": 0.411121
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.1329290121793747,
                    "model_output": 0.1329,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "creative_index",
                          "contribution": 0.0091
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0086
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.008
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.008
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0075
                        }
                      ],
                      "others": 0.0203,
                      "total": 0.1329,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "creative_index",
                          "margin": 0.09862
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.085102
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.07359
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.073468
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.068759
                        }
                      ],
                      "others_margin": 0.16672
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15905632078647614,
                    "model_output": 0.1591,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0261
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0257
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0147
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0142
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0075
                        }
                      ],
                      "others": 0.0053,
                      "total": 0.1591,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.24515
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.194199
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.096089
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.092898
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.049989
                        }
                      ],
                      "others_margin": 0.033893
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.21594811975955963,
                    "model_output": 0.2159,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0318
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0153
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0121
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0119
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0113
                        }
                      ],
                      "others": 0.0584,
                      "total": 0.2159,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.277554
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.110311
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086622
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.084906
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.074639
                        }
                      ],
                      "others_margin": 0.31594
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6666891574859619,
                    "model_output": 0.6667,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.1175
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0517
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.057
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0379
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0297
                        }
                      ],
                      "others": 0.1227,
                      "total": 0.6667,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.307869
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110158
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.109034
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.071107
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.05612
                        }
                      ],
                      "others_margin": 0.203267
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.008178472518921,
                    "model_output": 2.0082,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.5251
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1775
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1483
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0771
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0737
                        }
                      ],
                      "others": 0.1638,
                      "total": 2.0082,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.525115
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.177459
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.148262
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.077051
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.073682
                        }
                      ],
                      "others_margin": 0.163816
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.397868633270264,
                    "model_output": 7.3979,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1729
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0936
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0428
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0343
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0312
                        }
                      ],
                      "others": 0.167,
                      "total": 7.3979,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.172894
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.09356
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.04278
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.034252
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.031203
                        }
                      ],
                      "others_margin": 0.167126
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "role_matches": 36,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0050, quality 0.641)",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2215,
                "assists": 0.1336,
                "assist_rate": 0.1336,
                "expected_goals": 0.1599,
                "goals": 0.217,
                "goal_rate": 0.217,
                "shots_on_target": 0.67,
                "total_shots": 2.0182,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3923,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 0.0833,
                "aerial_lost": 0.1273,
                "interceptions": 0.3538,
                "tackles_won": 0.6812,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2737,
                "fouls_drawn": 0.3858,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.274,
                "xgot": 0.0921,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.3482
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.005,
                "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": 2.225,
                "expected_assists": 0.2215,
                "assists": 0.1322,
                "assist_rate": 0.1322,
                "expected_goals": 0.1599,
                "goals": 0.2147,
                "goal_rate": 0.2147,
                "shots_on_target": 0.6629,
                "total_shots": 2.0018,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 0.0833,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.274,
                "xgot": 0.0921,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.3482
              },
              "params": {
                "blend_weight": 0.0106,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.924,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Fulham"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 4.3923,
                  "after": 4.3703
                },
                {
                  "stat": "totalShots",
                  "before": 2.0182,
                  "after": 2.0018
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.3538,
                  "after": 0.3647
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.67,
                  "after": 0.6629
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2215,
                "assists": 0.1322,
                "assist_rate": 0.1322,
                "expected_goals": 0.1599,
                "goals": 0.2147,
                "goal_rate": 0.2147,
                "shots_on_target": 0.6629,
                "total_shots": 2.0111,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 0.0833,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.274,
                "xgot": 0.0921,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.3482
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2215,
                "assists": 0.1322,
                "assist_rate": 0.1322,
                "expected_goals": 0.1571,
                "goals": 0.211,
                "goal_rate": 0.211,
                "shots_on_target": 0.6515,
                "total_shots": 1.9765,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 1.1,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.2693,
                "xgot": 0.0905,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.325,
                "duel_xg_multiplier": 0.9828,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.468,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Milan van Ewijk",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                  "duel_win_rate": 0.468,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9828,
                  "skill_edge": -0.0437,
                  "height_edge": 0.032,
                  "attacker_skill": 0.6408,
                  "defender_skill": 0.7379,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Milan van Ewijk",
                      "market_value": 23000000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.7379
                    }
                  ],
                  "xg_override": 0.1571
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.0833,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 2.0111,
                  "after": 1.9765
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.3482,
                  "after": 1.325
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6629,
                  "after": 0.6515
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2215,
                "assist_rate": 0.1322,
                "assists": 0,
                "expected_goals": 0.1571,
                "goal_rate": 0.211,
                "goals": 0,
                "shots_on_target": 0.6515,
                "total_shots": 1.9765,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 1.1,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.2693,
                "xgot": 0.0905,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.325,
                "duel_xg_multiplier": 0.9828,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.468,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2094,
                "assist_rate": 0.1322,
                "assists": 0,
                "expected_goals": 0.1485,
                "goal_rate": 0.211,
                "goals": 0,
                "shots_on_target": 0.6515,
                "total_shots": 1.9765,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 1.1,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.2693,
                "xgot": 0.0856,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.325,
                "duel_xg_multiplier": 0.9828,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.468,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "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.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1571,
                  "after": 0.1485
                },
                {
                  "stat": "expected_assists",
                  "before": 0.2215,
                  "after": 0.2094
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 80.0)",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2094,
                "assist_rate": 0.1322,
                "assists": 0,
                "expected_goals": 0.1485,
                "goal_rate": 0.211,
                "goals": 0,
                "shots_on_target": 0.6515,
                "total_shots": 1.9765,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 1.1,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.2693,
                "xgot": 0.0856,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.325,
                "duel_xg_multiplier": 0.9828,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.468,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 80.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": 1041,
                "fifa_rank": 665.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2094,
                "assist_rate": 0.1322,
                "assists": 0,
                "expected_goals": 0.1485,
                "goal_rate": 0.211,
                "goals": 0,
                "shots_on_target": 0.6515,
                "total_shots": 1.9765,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 1.1,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.2693,
                "xgot": 0.0856,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.325,
                "duel_xg_multiplier": 0.9828,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.468,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.138,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.138,
                "goal_rate": 0.211,
                "scorer_weight": 0.1856,
                "squad_weight_total": 1.3663,
                "weight_share": 0.1359,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 2.225,
                "expected_assists": 0.2094,
                "assist_rate": 0.1322,
                "assists": 1,
                "expected_goals": 0.1485,
                "goal_rate": 0.211,
                "goals": 0,
                "shots_on_target": 0.6515,
                "total_shots": 1.9765,
                "rating": 7.3979,
                "minutes": 83.16,
                "total_pass": 55.8003,
                "accurate_pass": 49.8364,
                "duels_won": 2.2524,
                "total_long_balls": 4.0954,
                "accurate_long_balls": 3.3468,
                "total_own_half_passes": 22.6704,
                "accurate_own_half_passes": 21.0867,
                "total_opp_half_passes": 33.13,
                "accurate_opp_half_passes": 28.7498,
                "crosses_total": 4.3703,
                "crosses_accurate": 1.7449,
                "touches": 70.525,
                "possession_lost": 11.9818,
                "dispossessed": 0.75,
                "duels_lost": 1.985,
                "aerial_won": 1.1,
                "aerial_lost": 0.1273,
                "interceptions": 0.3647,
                "tackles_won": 0.6838,
                "tackles": 0.9414,
                "clearances": 0.4759,
                "total_contest": 1.4651,
                "won_contest": 0.8468,
                "challenges_lost": 0.2155,
                "fouls": 0.2757,
                "fouls_drawn": 0.3866,
                "blocks": 0.0489,
                "big_chances_created": 0.7846,
                "big_chances_missed": 0.2693,
                "xgot": 0.0856,
                "ball_carries": 24.3244,
                "total_progression": 83.9403,
                "progressive_carries": 2.2726,
                "shots_off_target": 1.325,
                "duel_xg_multiplier": 0.9828,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.468,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.138,
                "projected_assists": 1,
                "assist_probability": 0.1889,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.1889,
                "assist_rate": 0.1322,
                "provider_weight": 0.1675,
                "squad_weight_total": 0.758,
                "weight_share": 0.221,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Benjamin Lecomte": {
          "player_id": 123207,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 186,
          "market_value": 825000,
          "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": 3,
            "projected_substitution_expected_count": 3.348,
            "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": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3761,
            "combined_rank_score": 1750.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3261.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.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Benjamin Lecomte",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Thiago Fernández",
                  "ranking": 3756
                },
                {
                  "player_name": "Jarne Steuckers",
                  "ranking": 3757
                },
                {
                  "player_name": "Rodrigo Gomes",
                  "ranking": 3758
                },
                {
                  "player_name": "Myrto Uzuni",
                  "ranking": 3759
                },
                {
                  "player_name": "Joel Ordoñez",
                  "ranking": 3760
                }
              ],
              "lower": [
                {
                  "player_name": "Matte Smets",
                  "ranking": 3762
                },
                {
                  "player_name": "Lars Unnerstall",
                  "ranking": 3763
                },
                {
                  "player_name": "Amir Murillo",
                  "ranking": 3764
                },
                {
                  "player_name": "Tatsuhiro Sakamoto",
                  "ranking": 3765
                },
                {
                  "player_name": "Steven Berghuis",
                  "ranking": 3766
                }
              ]
            }
          },
          "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": "Fulham",
              "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 (€825,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": 825000,
                "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": 3,
                "projected_substitution_expected_count": 3.348,
                "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": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 73.0)",
              "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": 3,
                "projected_substitution_expected_count": 3.348,
                "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": 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": 3761,
                "fifa_rank": 3261.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Joachim Andersen": {
          "player_id": 362682,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 5,
          "height": 190,
          "market_value": 21000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7903,
            "minutes": 14,
            "total_pass": 57,
            "accurate_pass": 49,
            "duels_won": 4,
            "total_long_balls": 8,
            "accurate_long_balls": 4,
            "total_own_half_passes": 34,
            "accurate_own_half_passes": 33,
            "total_opp_half_passes": 22,
            "accurate_opp_half_passes": 17,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 68,
            "possession_lost": 8.2254,
            "dispossessed": 0.1471,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0145,
            "assists": 0,
            "expected_goals": 0.0223,
            "expected_assists": 0.0307,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0156,
            "ball_carries": 18,
            "total_progression": 63,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.233,
            "bench_expected_minutes": 14.38,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 10,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "clearances": 4,
                "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": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0649,
                "total_shots": 0,
                "total_pass": 112,
                "accurate_pass": 101,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0375,
                "total_shots": 0,
                "total_pass": 88,
                "accurate_pass": 77,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 5,
                "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": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 52,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0514,
                "expected_assists": 0.0055,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 19,
                "interceptions": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 55,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024004,
              "match_date": "2026-04-25",
              "home_team": "Fulham",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0117,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 43,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 4,
                "interceptions": 4,
                "clearances": 7,
                "aerial_won": 3,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025031,
              "match_date": "2026-04-18",
              "home_team": "Brentford",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Brentford",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0632,
                "expected_assists": 0.007,
                "total_shots": 1,
                "total_pass": 62,
                "accurate_pass": 46,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024000,
              "match_date": "2026-04-11",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0588,
                "expected_assists": 0.2216,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 68,
                "accurate_pass": 56,
                "interceptions": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024016,
              "match_date": "2026-03-21",
              "home_team": "Fulham",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Burnley",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0167,
                "total_shots": 0,
                "total_pass": 72,
                "accurate_pass": 65,
                "clearances": 10,
                "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": 14023995,
              "match_date": "2026-03-15",
              "home_team": "Nottingham Forest",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 70,
                "accurate_pass": 55,
                "interceptions": 1,
                "clearances": 11,
                "aerial_won": 5,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1034,
            "combined_rank_score": 462.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 68.0,
            "sofascore_rating": 7.6,
            "sofascore_appearances": 6.0,
            "fifa_rank": 856.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7903,
            "source_file": "data/player_rankings.csv",
            "player_name": "Joachim Andersen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jonas Urbig",
                  "ranking": 1029
                },
                {
                  "player_name": "James Donachie",
                  "ranking": 1030
                },
                {
                  "player_name": "Felipe Campos",
                  "ranking": 1031
                },
                {
                  "player_name": "Carlos Romero",
                  "ranking": 1032
                },
                {
                  "player_name": "Shota Gvazava",
                  "ranking": 1033
                }
              ],
              "lower": [
                {
                  "player_name": "Alisson",
                  "ranking": 1035
                },
                {
                  "player_name": "Anthony Elanga",
                  "ranking": 1036
                },
                {
                  "player_name": "Sander Berge",
                  "ranking": 1037
                },
                {
                  "player_name": "Rustam Nartazhiev",
                  "ranking": 1038
                },
                {
                  "player_name": "Christian Bravo",
                  "ranking": 1039
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.377468600761329,
            "bench_appearance_prob": 0.233,
            "market_value_adjustment": 1.005,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost D_service (36 historical appearances) to 14.4 expected mins (appearance prob 0.23); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.5206,
                "tackles": 0.478,
                "tackles_won": 0.3099,
                "clearances": 1.9994,
                "aerial_won": 0.9883,
                "total_shots": 0.2312,
                "rating": 6.7903,
                "minutes": 15.33,
                "total_pass": 60.2051,
                "accurate_pass": 52.171,
                "duels_won": 4.1414,
                "total_long_balls": 8.2139,
                "accurate_long_balls": 3.8068,
                "total_own_half_passes": 36.4513,
                "accurate_own_half_passes": 34.5305,
                "total_opp_half_passes": 23.7538,
                "accurate_opp_half_passes": 17.6405,
                "crosses_total": 0.2127,
                "crosses_accurate": 0.0442,
                "touches": 71.7372,
                "possession_lost": 8.7267,
                "dispossessed": 0.1464,
                "duels_lost": 2.1007,
                "aerial_lost": 0.9797,
                "total_contest": 0.0534,
                "won_contest": 0.032,
                "ball_recovery": 2.9062,
                "challenges_lost": 0.1633,
                "fouls": 0.7899,
                "fouls_drawn": 0.4518,
                "blocks": 0.4119,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0155,
                "assist_rate": 0.0155,
                "expected_goals": 0.0237,
                "expected_assists": 0.0325,
                "shots_on_target": 0.074,
                "big_chances_created": 0.0204,
                "xgot": 0.0165,
                "ball_carries": 19.3554,
                "total_progression": 67.0704,
                "progressive_carries": 0.886,
                "key_pass": 0.4778,
                "shots_off_target": 0.1572
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 52.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Aston Villa",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Brentford",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Burnley",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Nottingham Forest",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 5.4,
                  "aerialWon": 2.5324,
                  "totalClearance_p90": 10.2193,
                  "totalTackle": 1.1287,
                  "defensive_actions": 2.1602
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.520605206489563,
                    "model_output": 0.5206,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4484
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.03
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0233
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0182
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0179
                        }
                      ],
                      "others": 0.0193,
                      "total": 0.5206,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.736529
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.070259
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.051372
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.038398
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.036397
                        }
                      ],
                      "others_margin": 0.037786
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.47804343700408936,
                    "model_output": 0.478,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7617
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0311
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0194
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0139
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0134
                        }
                      ],
                      "others": -0.0656,
                      "total": 0.478,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.800163
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.051277
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.033462
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.024709
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.024388
                        }
                      ],
                      "others_margin": -0.128353
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.3098628520965576,
                    "model_output": 0.3099,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4358
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0243
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.022
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0098
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.035,
                      "total": 0.3099,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.725082
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.061087
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.058932
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.027242
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.023415
                        }
                      ],
                      "others_margin": -0.107466
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.9993735551834106,
                    "model_output": 1.9994,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.1002
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3683
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1514
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0948
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0849
                        }
                      ],
                      "others": -0.0249,
                      "total": 1.9994,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.949818
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.245295
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.085658
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.050139
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.042827
                        }
                      ],
                      "others_margin": -0.012391
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9883418679237366,
                    "model_output": 0.9883,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7976
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.2027
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0576
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0553
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0436
                        }
                      ],
                      "others": 0.0415,
                      "total": 0.9883,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.857571
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.296403
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.070384
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.063192
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.047189
                        }
                      ],
                      "others_margin": 0.04286
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.2312099188566208,
                    "model_output": 0.2312,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2406
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.038
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0284
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0131
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0103
                        }
                      ],
                      "others": -0.0155,
                      "total": 0.2312,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.240602
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.038041
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.028408
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.013079
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.010263
                        }
                      ],
                      "others_margin": -0.015577
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.790297031402588,
                    "model_output": 6.7903,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0825
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0177
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0172
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0155
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0139
                        }
                      ],
                      "others": 0.0459,
                      "total": 6.7903,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.082476
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.017678
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.017209
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.015547
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.013921
                        }
                      ],
                      "others_margin": 0.045879
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 36,
                  "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.0050, quality 0.641)",
              "stats": {
                "interceptions": 0.5232,
                "tackles": 0.4804,
                "tackles_won": 0.3114,
                "clearances": 2.0094,
                "aerial_won": 0.9933,
                "total_shots": 0.2324,
                "rating": 6.7903,
                "minutes": 15.33,
                "total_pass": 60.5061,
                "accurate_pass": 52.4319,
                "duels_won": 4.1621,
                "total_long_balls": 8.255,
                "accurate_long_balls": 3.8258,
                "total_own_half_passes": 36.6336,
                "accurate_own_half_passes": 34.7032,
                "total_opp_half_passes": 23.8726,
                "accurate_opp_half_passes": 17.7287,
                "crosses_total": 0.2138,
                "crosses_accurate": 0.0444,
                "touches": 72.0959,
                "possession_lost": 8.7703,
                "dispossessed": 0.1471,
                "duels_lost": 2.1112,
                "aerial_lost": 0.9846,
                "total_contest": 0.0537,
                "won_contest": 0.0322,
                "ball_recovery": 2.9207,
                "challenges_lost": 0.1641,
                "fouls": 0.7938,
                "fouls_drawn": 0.4541,
                "blocks": 0.414,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0156,
                "assist_rate": 0.0156,
                "expected_goals": 0.0238,
                "expected_assists": 0.0327,
                "shots_on_target": 0.0744,
                "big_chances_created": 0.0205,
                "xgot": 0.0166,
                "ball_carries": 19.4522,
                "total_progression": 67.4058,
                "progressive_carries": 0.8904,
                "key_pass": 0.4802,
                "shots_off_target": 0.158
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.005,
                "reference_quality": 0.505,
                "history_matches": 36,
                "history_shrink": 0.122,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0053)",
              "stats": {
                "interceptions": 0.5213,
                "tackles": 0.4804,
                "tackles_won": 0.3098,
                "clearances": 2.0094,
                "aerial_won": 0.9933,
                "total_shots": 0.2312,
                "rating": 6.7903,
                "minutes": 15.33,
                "total_pass": 60.5061,
                "accurate_pass": 52.4319,
                "duels_won": 4.1621,
                "total_long_balls": 8.255,
                "accurate_long_balls": 3.8258,
                "total_own_half_passes": 36.6336,
                "accurate_own_half_passes": 34.7032,
                "total_opp_half_passes": 23.8726,
                "accurate_opp_half_passes": 17.7287,
                "crosses_total": 0.2127,
                "crosses_accurate": 0.0444,
                "touches": 72.0959,
                "possession_lost": 8.7703,
                "dispossessed": 0.1471,
                "duels_lost": 2.1112,
                "aerial_lost": 0.9846,
                "total_contest": 0.0537,
                "won_contest": 0.0322,
                "ball_recovery": 2.9207,
                "challenges_lost": 0.1641,
                "fouls": 0.7923,
                "fouls_drawn": 0.4526,
                "blocks": 0.414,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0155,
                "assist_rate": 0.0155,
                "expected_goals": 0.0238,
                "expected_assists": 0.0327,
                "shots_on_target": 0.074,
                "big_chances_created": 0.0205,
                "xgot": 0.0166,
                "ball_carries": 19.4522,
                "total_progression": 67.4058,
                "progressive_carries": 0.8904,
                "key_pass": 0.4802,
                "shots_off_target": 0.158
              },
              "params": {
                "blend_weight": 0.0053,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1703,
                "prior_reliability": 0.0667,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 15.3 to 14.4 expected minutes (appearance prob 0.23)",
              "stats": {
                "interceptions": 0.4889,
                "tackles": 0.4506,
                "tackles_won": 0.2906,
                "clearances": 1.8845,
                "aerial_won": 0.9316,
                "total_shots": 0.2176,
                "rating": 6.7903,
                "minutes": 14.38,
                "total_pass": 56.7465,
                "accurate_pass": 49.174,
                "duels_won": 3.9035,
                "total_long_balls": 7.7421,
                "accurate_long_balls": 3.5881,
                "total_own_half_passes": 34.3574,
                "accurate_own_half_passes": 32.5469,
                "total_opp_half_passes": 22.3893,
                "accurate_opp_half_passes": 16.6271,
                "crosses_total": 0.1995,
                "crosses_accurate": 0.0416,
                "touches": 67.6162,
                "possession_lost": 8.2254,
                "dispossessed": 0.1471,
                "duels_lost": 1.98,
                "aerial_lost": 0.9846,
                "total_contest": 0.0504,
                "won_contest": 0.0302,
                "ball_recovery": 2.7392,
                "challenges_lost": 0.1641,
                "fouls": 0.7431,
                "fouls_drawn": 0.4245,
                "blocks": 0.3883,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0145,
                "assist_rate": 0.0145,
                "expected_goals": 0.0223,
                "expected_assists": 0.0307,
                "shots_on_target": 0.0694,
                "big_chances_created": 0.0192,
                "xgot": 0.0156,
                "ball_carries": 18.2435,
                "total_progression": 63.2175,
                "progressive_carries": 0.8351,
                "key_pass": 0.4504,
                "shots_off_target": 0.1482,
                "bench_appearance_probability": 0.233,
                "bench_expected_minutes": 14.38
              },
              "params": {
                "expected_minutes": 14.38,
                "projection_minutes": 15.33,
                "minutes_scale": 0.9379,
                "appearance_probability": 0.233
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.4889,
                "tackles": 0.4506,
                "tackles_won": 0.2906,
                "clearances": 1.8845,
                "aerial_won": 0.9316,
                "total_shots": 0.2176,
                "rating": 6.7903,
                "minutes": 14.38,
                "total_pass": 56.7465,
                "accurate_pass": 49.174,
                "duels_won": 3.9035,
                "total_long_balls": 7.7421,
                "accurate_long_balls": 3.5881,
                "total_own_half_passes": 34.3574,
                "accurate_own_half_passes": 32.5469,
                "total_opp_half_passes": 22.3893,
                "accurate_opp_half_passes": 16.6271,
                "crosses_total": 0.1995,
                "crosses_accurate": 0.0416,
                "touches": 67.6162,
                "possession_lost": 8.2254,
                "dispossessed": 0.1471,
                "duels_lost": 1.98,
                "aerial_lost": 0.9846,
                "total_contest": 0.0504,
                "won_contest": 0.0302,
                "ball_recovery": 2.7392,
                "challenges_lost": 0.1641,
                "fouls": 0.7431,
                "fouls_drawn": 0.4245,
                "blocks": 0.3883,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0145,
                "assist_rate": 0.0145,
                "expected_goals": 0.0223,
                "expected_assists": 0.0307,
                "shots_on_target": 0.0694,
                "big_chances_created": 0.0192,
                "xgot": 0.0156,
                "ball_carries": 18.2435,
                "total_progression": 63.2175,
                "progressive_carries": 0.8351,
                "key_pass": 0.4504,
                "shots_off_target": 0.1482,
                "bench_appearance_probability": 0.233,
                "bench_expected_minutes": 14.38
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.4889,
                "tackles": 0.4506,
                "tackles_won": 0.2906,
                "clearances": 1.8845,
                "aerial_won": 0.9316,
                "total_shots": 0.2176,
                "rating": 6.7903,
                "minutes": 14.38,
                "total_pass": 56.7465,
                "accurate_pass": 49.174,
                "duels_won": 3.9035,
                "total_long_balls": 7.7421,
                "accurate_long_balls": 3.5881,
                "total_own_half_passes": 34.3574,
                "accurate_own_half_passes": 32.5469,
                "total_opp_half_passes": 22.3893,
                "accurate_opp_half_passes": 16.6271,
                "crosses_total": 0.1995,
                "crosses_accurate": 0.0416,
                "touches": 67.6162,
                "possession_lost": 8.2254,
                "dispossessed": 0.1471,
                "duels_lost": 1.98,
                "aerial_lost": 0.9846,
                "total_contest": 0.0504,
                "won_contest": 0.0302,
                "ball_recovery": 2.7392,
                "challenges_lost": 0.1641,
                "fouls": 0.7431,
                "fouls_drawn": 0.4245,
                "blocks": 0.3883,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0145,
                "assists": 0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0307,
                "shots_on_target": 0.0694,
                "big_chances_created": 0.0192,
                "xgot": 0.0156,
                "ball_carries": 18.2435,
                "total_progression": 63.2175,
                "progressive_carries": 0.8351,
                "key_pass": 0.4504,
                "shots_off_target": 0.1482,
                "bench_appearance_probability": 0.233,
                "bench_expected_minutes": 14.38,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.233,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 79.0)",
              "stats": {
                "interceptions": 0.4889,
                "tackles": 0.4506,
                "tackles_won": 0.2906,
                "clearances": 1.8845,
                "aerial_won": 0.9316,
                "total_shots": 0.2176,
                "rating": 6.7903,
                "minutes": 14.38,
                "total_pass": 56.7465,
                "accurate_pass": 49.174,
                "duels_won": 3.9035,
                "total_long_balls": 7.7421,
                "accurate_long_balls": 3.5881,
                "total_own_half_passes": 34.3574,
                "accurate_own_half_passes": 32.5469,
                "total_opp_half_passes": 22.3893,
                "accurate_opp_half_passes": 16.6271,
                "crosses_total": 0.1995,
                "crosses_accurate": 0.0416,
                "touches": 67.6162,
                "possession_lost": 8.2254,
                "dispossessed": 0.1471,
                "duels_lost": 1.98,
                "aerial_lost": 0.9846,
                "total_contest": 0.0504,
                "won_contest": 0.0302,
                "ball_recovery": 2.7392,
                "challenges_lost": 0.1641,
                "fouls": 0.7431,
                "fouls_drawn": 0.4245,
                "blocks": 0.3883,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0145,
                "assists": 0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0307,
                "shots_on_target": 0.0694,
                "big_chances_created": 0.0192,
                "xgot": 0.0156,
                "ball_carries": 18.2435,
                "total_progression": 63.2175,
                "progressive_carries": 0.8351,
                "key_pass": 0.4504,
                "shots_off_target": 0.1482,
                "bench_appearance_probability": 0.233,
                "bench_expected_minutes": 14.38,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1034,
                "fifa_rank": 856.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            }
          ]
        },
        "Ryan Sessegnon": {
          "player_id": 836698,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 178,
          "market_value": 21000000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 1,
            "rating": 6.6926,
            "minutes": 18,
            "total_pass": 11,
            "accurate_pass": 8,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 20,
            "possession_lost": 5.9866,
            "dispossessed": 0.3632,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0519,
            "assists": 0,
            "expected_goals": 0.0223,
            "expected_assists": 0.0916,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0107,
            "ball_carries": 6,
            "total_progression": 43,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.618,
            "bench_expected_minutes": 18.02,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363885,
              "match_date": "2026-10-17",
              "home_team": "Fulham",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Hull City",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0031,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1333,
                "expected_assists": 0.0243,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 42,
                "accurate_pass": 36,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0791,
                "expected_assists": 0.3199,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 14,
                "key_pass": 1,
                "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": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.021,
                "expected_assists": 0.1245,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 13,
                "tackles": 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": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 17,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0325,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 4,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14024004,
              "match_date": "2026-04-25",
              "home_team": "Fulham",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 81,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2648,
                "expected_assists": 0.0068,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 14,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025031,
              "match_date": "2026-04-18",
              "home_team": "Brentford",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Brentford",
              "stats": {
                "minutes": 81,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1776,
                "expected_assists": 0.0418,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024000,
              "match_date": "2026-04-11",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 21,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 6,
                "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": 14024016,
              "match_date": "2026-03-21",
              "home_team": "Fulham",
              "away_team": "Burnley",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Burnley",
              "stats": {
                "minutes": 29,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0393,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 13,
                "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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023995,
              "match_date": "2026-03-15",
              "home_team": "Nottingham Forest",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Nottingham Forest",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "interceptions": 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": 3091,
            "combined_rank_score": 1057.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1417.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.6926,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ryan Sessegnon",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Callum Wilson",
                  "ranking": 3086
                },
                {
                  "player_name": "Victor Lindelöf",
                  "ranking": 3087
                },
                {
                  "player_name": "Oscar Bobb",
                  "ranking": 3088
                },
                {
                  "player_name": "Emmanuel Agbadou",
                  "ranking": 3089
                },
                {
                  "player_name": "Luis Romo",
                  "ranking": 3090
                }
              ],
              "lower": [
                {
                  "player_name": "Albian Hajdari",
                  "ranking": 3092
                },
                {
                  "player_name": "Joe Willock",
                  "ranking": 3093
                },
                {
                  "player_name": "Adam Hložek",
                  "ranking": 3094
                },
                {
                  "player_name": "Jamie Gittens",
                  "ranking": 3095
                },
                {
                  "player_name": "Gonzalo Montiel",
                  "ranking": 3096
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.755,
          "history_matches": 32,
          "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": 32,
            "data_confidence": 0.755,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.02,
            "bench_appearance_prob": 0.618,
            "market_value_adjustment": 1.0055,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 21.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost D_service (32 historical appearances) to 18.0 expected mins (appearance prob 0.62); FBref playing time empirical prior: 2.0 sub appearances, 21.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3754,
                "tackles": 0.65,
                "tackles_won": 0.4421,
                "clearances": 0.7452,
                "aerial_won": 0.3094,
                "total_shots": 0.6066,
                "rating": 6.6926,
                "minutes": 17.12,
                "total_pass": 10.0992,
                "accurate_pass": 7.8446,
                "duels_won": 1.6458,
                "total_long_balls": 1.0809,
                "accurate_long_balls": 0.3755,
                "total_own_half_passes": 3.4464,
                "accurate_own_half_passes": 2.9395,
                "total_opp_half_passes": 6.6528,
                "accurate_opp_half_passes": 4.9051,
                "crosses_total": 1.6487,
                "crosses_accurate": 0.2958,
                "touches": 19.2092,
                "possession_lost": 5.6565,
                "dispossessed": 0.3612,
                "duels_lost": 1.8506,
                "aerial_lost": 0.4266,
                "total_contest": 1.4908,
                "won_contest": 0.8096,
                "ball_recovery": 1.2776,
                "challenges_lost": 0.1106,
                "fouls": 0.3509,
                "fouls_drawn": 0.0,
                "blocks": 0.1358,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0491,
                "assist_rate": 0.0491,
                "expected_goals": 0.0211,
                "expected_assists": 0.0865,
                "shots_on_target": 0.1106,
                "big_chances_created": 0.0,
                "xgot": 0.0101,
                "ball_carries": 5.7166,
                "total_progression": 40.3915,
                "progressive_carries": 1.1809,
                "key_pass": 0.2377,
                "shots_off_target": 0.496
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Hull City",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.1508,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1282,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.109,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 22.0,
                    "is_starting": false,
                    "weight": 0.0926,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0787,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Aston Villa",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Brentford",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Liverpool FC",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.0484,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Burnley",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.0411,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Nottingham Forest",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 0.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.3282,
                  "aerialWon": 0.3679,
                  "totalClearance_p90": 2.2481,
                  "totalTackle": 0.8512,
                  "defensive_actions": 1.7889
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3753775954246521,
                    "model_output": 0.3754,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4992
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0201
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0189
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0178
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0125
                        }
                      ],
                      "others": -0.0194,
                      "total": 0.3754,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.868201
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.05409
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.0483
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.045394
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.03218
                        }
                      ],
                      "others_margin": -0.050352
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.6499776840209961,
                    "model_output": 0.65,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8047
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0441
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0283
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0169
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0145
                        }
                      ],
                      "others": 0.0244,
                      "total": 0.65,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.871897
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.073426
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.046553
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.028059
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.023482
                        }
                      ],
                      "others_margin": 0.038367
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.4420882761478424,
                    "model_output": 0.4421,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.447
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0214
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0193
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0147
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0107
                        }
                      ],
                      "others": 0.0422,
                      "total": 0.4421,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.752801
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.055255
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.04998
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.036489
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.026449
                        }
                      ],
                      "others_margin": 0.100192
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.7452166676521301,
                    "model_output": 0.7452,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0586
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.307
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0816
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0618
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0523
                        }
                      ],
                      "others": -0.1186,
                      "total": 0.7452,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.91889
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.254455
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.080108
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.065316
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.058824
                        }
                      ],
                      "others_margin": -0.147609
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.309447705745697,
                    "model_output": 0.3094,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7696
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.2143
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0417
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.037
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0258
                        }
                      ],
                      "others": 0.0126,
                      "total": 0.3094,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.810957
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.427944
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.109737
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.108456
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.083385
                        }
                      ],
                      "others_margin": 0.041697
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6066142916679382,
                    "model_output": 0.6066,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2107
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1941
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0361
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0228
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0214
                        }
                      ],
                      "others": 0.068,
                      "total": 0.6066,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.210731
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.194097
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.036105
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.022751
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.02138
                        }
                      ],
                      "others_margin": 0.068072
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.692570686340332,
                    "model_output": 6.6926,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": 0.0453
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0373
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0277
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0233
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0207
                        }
                      ],
                      "others": -0.0895,
                      "total": 6.6926,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "touches_p90",
                          "margin": 0.045324
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.037271
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.027666
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.023328
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.020667
                        }
                      ],
                      "others_margin": -0.089539
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 32,
                  "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.0055, quality 0.641)",
              "stats": {
                "interceptions": 0.3774,
                "tackles": 0.6536,
                "tackles_won": 0.4445,
                "clearances": 0.7493,
                "aerial_won": 0.3111,
                "total_shots": 0.61,
                "rating": 6.6926,
                "minutes": 17.12,
                "total_pass": 10.1547,
                "accurate_pass": 7.8877,
                "duels_won": 1.6549,
                "total_long_balls": 1.0868,
                "accurate_long_balls": 0.3776,
                "total_own_half_passes": 3.4654,
                "accurate_own_half_passes": 2.9557,
                "total_opp_half_passes": 6.6894,
                "accurate_opp_half_passes": 4.9321,
                "crosses_total": 1.6578,
                "crosses_accurate": 0.2974,
                "touches": 19.3149,
                "possession_lost": 5.6876,
                "dispossessed": 0.3632,
                "duels_lost": 1.8608,
                "aerial_lost": 0.4289,
                "total_contest": 1.499,
                "won_contest": 0.8141,
                "ball_recovery": 1.2846,
                "challenges_lost": 0.1112,
                "fouls": 0.3528,
                "fouls_drawn": 0.0,
                "blocks": 0.1365,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0494,
                "assist_rate": 0.0494,
                "expected_goals": 0.0212,
                "expected_assists": 0.087,
                "shots_on_target": 0.1112,
                "big_chances_created": 0.0,
                "xgot": 0.0102,
                "ball_carries": 5.748,
                "total_progression": 40.6137,
                "progressive_carries": 1.1874,
                "key_pass": 0.239,
                "shots_off_target": 0.4987
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0055,
                "reference_quality": 0.505,
                "history_matches": 32,
                "history_shrink": 0.1351,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0029)",
              "stats": {
                "interceptions": 0.3774,
                "tackles": 0.6536,
                "tackles_won": 0.4432,
                "clearances": 0.7493,
                "aerial_won": 0.3111,
                "total_shots": 0.6107,
                "rating": 6.6926,
                "minutes": 17.12,
                "total_pass": 10.1547,
                "accurate_pass": 7.8877,
                "duels_won": 1.6549,
                "total_long_balls": 1.0868,
                "accurate_long_balls": 0.3776,
                "total_own_half_passes": 3.4654,
                "accurate_own_half_passes": 2.9557,
                "total_opp_half_passes": 6.6894,
                "accurate_opp_half_passes": 4.9321,
                "crosses_total": 1.6607,
                "crosses_accurate": 0.2974,
                "touches": 19.3149,
                "possession_lost": 5.6876,
                "dispossessed": 0.3632,
                "duels_lost": 1.8608,
                "aerial_lost": 0.4289,
                "total_contest": 1.499,
                "won_contest": 0.8141,
                "ball_recovery": 1.2846,
                "challenges_lost": 0.1112,
                "fouls": 0.3518,
                "fouls_drawn": 0.0,
                "blocks": 0.1365,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0493,
                "assist_rate": 0.0493,
                "expected_goals": 0.0212,
                "expected_assists": 0.087,
                "shots_on_target": 0.1121,
                "big_chances_created": 0.0,
                "xgot": 0.0102,
                "ball_carries": 5.748,
                "total_progression": 40.6137,
                "progressive_carries": 1.1874,
                "key_pass": 0.239,
                "shots_off_target": 0.4987
              },
              "params": {
                "blend_weight": 0.0029,
                "history_matches": 32,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1902,
                "prior_reliability": 0.0333,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.1 to 18.0 expected minutes (appearance prob 0.62)",
              "stats": {
                "interceptions": 0.3972,
                "tackles": 0.688,
                "tackles_won": 0.4665,
                "clearances": 0.7887,
                "aerial_won": 0.3275,
                "total_shots": 0.6429,
                "rating": 6.6926,
                "minutes": 18.02,
                "total_pass": 10.6885,
                "accurate_pass": 8.3024,
                "duels_won": 1.7419,
                "total_long_balls": 1.1439,
                "accurate_long_balls": 0.3975,
                "total_own_half_passes": 3.6476,
                "accurate_own_half_passes": 3.1111,
                "total_opp_half_passes": 7.0411,
                "accurate_opp_half_passes": 5.1914,
                "crosses_total": 1.748,
                "crosses_accurate": 0.313,
                "touches": 20.3303,
                "possession_lost": 5.9866,
                "dispossessed": 0.3632,
                "duels_lost": 1.9586,
                "aerial_lost": 0.4289,
                "total_contest": 1.5778,
                "won_contest": 0.8569,
                "ball_recovery": 1.3521,
                "challenges_lost": 0.1112,
                "fouls": 0.3703,
                "fouls_drawn": 0.0,
                "blocks": 0.1437,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0519,
                "assist_rate": 0.0519,
                "expected_goals": 0.0223,
                "expected_assists": 0.0916,
                "shots_on_target": 0.118,
                "big_chances_created": 0.0,
                "xgot": 0.0107,
                "ball_carries": 6.0502,
                "total_progression": 42.7488,
                "progressive_carries": 1.2498,
                "key_pass": 0.2516,
                "shots_off_target": 0.5249,
                "bench_appearance_probability": 0.618,
                "bench_expected_minutes": 18.02
              },
              "params": {
                "expected_minutes": 18.02,
                "projection_minutes": 17.12,
                "minutes_scale": 1.0526,
                "appearance_probability": 0.618
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3972,
                "tackles": 0.688,
                "tackles_won": 0.4665,
                "clearances": 0.7887,
                "aerial_won": 0.3275,
                "total_shots": 0.6429,
                "rating": 6.6926,
                "minutes": 18.02,
                "total_pass": 10.6885,
                "accurate_pass": 8.3024,
                "duels_won": 1.7419,
                "total_long_balls": 1.1439,
                "accurate_long_balls": 0.3975,
                "total_own_half_passes": 3.6476,
                "accurate_own_half_passes": 3.1111,
                "total_opp_half_passes": 7.0411,
                "accurate_opp_half_passes": 5.1914,
                "crosses_total": 1.748,
                "crosses_accurate": 0.313,
                "touches": 20.3303,
                "possession_lost": 5.9866,
                "dispossessed": 0.3632,
                "duels_lost": 1.9586,
                "aerial_lost": 0.4289,
                "total_contest": 1.5778,
                "won_contest": 0.8569,
                "ball_recovery": 1.3521,
                "challenges_lost": 0.1112,
                "fouls": 0.3703,
                "fouls_drawn": 0.0,
                "blocks": 0.1437,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0519,
                "assist_rate": 0.0519,
                "expected_goals": 0.0223,
                "expected_assists": 0.0916,
                "shots_on_target": 0.118,
                "big_chances_created": 0.0,
                "xgot": 0.0107,
                "ball_carries": 6.0502,
                "total_progression": 42.7488,
                "progressive_carries": 1.2498,
                "key_pass": 0.2516,
                "shots_off_target": 0.5249,
                "bench_appearance_probability": 0.618,
                "bench_expected_minutes": 18.02
              },
              "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.3972,
                "tackles": 0.688,
                "tackles_won": 0.4665,
                "clearances": 0.7887,
                "aerial_won": 0.3275,
                "total_shots": 0.6429,
                "rating": 6.6926,
                "minutes": 18.02,
                "total_pass": 10.6885,
                "accurate_pass": 8.3024,
                "duels_won": 1.7419,
                "total_long_balls": 1.1439,
                "accurate_long_balls": 0.3975,
                "total_own_half_passes": 3.6476,
                "accurate_own_half_passes": 3.1111,
                "total_opp_half_passes": 7.0411,
                "accurate_opp_half_passes": 5.1914,
                "crosses_total": 1.748,
                "crosses_accurate": 0.313,
                "touches": 20.3303,
                "possession_lost": 5.9866,
                "dispossessed": 0.3632,
                "duels_lost": 1.9586,
                "aerial_lost": 0.4289,
                "total_contest": 1.5778,
                "won_contest": 0.8569,
                "ball_recovery": 1.3521,
                "challenges_lost": 0.1112,
                "fouls": 0.3703,
                "fouls_drawn": 0.0,
                "blocks": 0.1437,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0519,
                "assists": 0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0916,
                "shots_on_target": 0.118,
                "big_chances_created": 0.0,
                "xgot": 0.0107,
                "ball_carries": 6.0502,
                "total_progression": 42.7488,
                "progressive_carries": 1.2498,
                "key_pass": 0.2516,
                "shots_off_target": 0.5249,
                "bench_appearance_probability": 0.618,
                "bench_expected_minutes": 18.02,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.618,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 77.0)",
              "stats": {
                "interceptions": 0.3972,
                "tackles": 0.688,
                "tackles_won": 0.4665,
                "clearances": 0.7887,
                "aerial_won": 0.3275,
                "total_shots": 0.6429,
                "rating": 6.6926,
                "minutes": 18.02,
                "total_pass": 10.6885,
                "accurate_pass": 8.3024,
                "duels_won": 1.7419,
                "total_long_balls": 1.1439,
                "accurate_long_balls": 0.3975,
                "total_own_half_passes": 3.6476,
                "accurate_own_half_passes": 3.1111,
                "total_opp_half_passes": 7.0411,
                "accurate_opp_half_passes": 5.1914,
                "crosses_total": 1.748,
                "crosses_accurate": 0.313,
                "touches": 20.3303,
                "possession_lost": 5.9866,
                "dispossessed": 0.3632,
                "duels_lost": 1.9586,
                "aerial_lost": 0.4289,
                "total_contest": 1.5778,
                "won_contest": 0.8569,
                "ball_recovery": 1.3521,
                "challenges_lost": 0.1112,
                "fouls": 0.3703,
                "fouls_drawn": 0.0,
                "blocks": 0.1437,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0519,
                "assists": 0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0916,
                "shots_on_target": 0.118,
                "big_chances_created": 0.0,
                "xgot": 0.0107,
                "ball_carries": 6.0502,
                "total_progression": 42.7488,
                "progressive_carries": 1.2498,
                "key_pass": 0.2516,
                "shots_off_target": 0.5249,
                "bench_appearance_probability": 0.618,
                "bench_expected_minutes": 18.02,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3091,
                "fifa_rank": 1417.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            }
          ]
        },
        "Hugo Larsson": {
          "player_id": 1142211,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 187,
          "market_value": 30000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0279,
            "assist_rate": 0.0369,
            "assists": 0,
            "expected_goals": 0.0621,
            "goal_rate": 0.0725,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6622,
            "minutes": 23,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 2.5549,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 16,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.549,
            "bench_expected_minutes": 23.08,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 10,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0608,
                "expected_assists": 0.0005,
                "total_shots": 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": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 13,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 2,
                "clearances": 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": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0053,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 11,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1278,
                "expected_assists": 0.2213,
                "total_shots": 1,
                "total_pass": 17,
                "accurate_pass": 14,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3138,
            "combined_rank_score": 1104.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1511.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6622,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hugo Larsson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Robert Navarro",
                  "ranking": 3133
                },
                {
                  "player_name": "Luka Sučić",
                  "ranking": 3134
                },
                {
                  "player_name": "Che Adams",
                  "ranking": 3135
                },
                {
                  "player_name": "Carlos Vicente",
                  "ranking": 3136
                },
                {
                  "player_name": "Lautaro Di Lollo",
                  "ranking": 3137
                }
              ],
              "lower": [
                {
                  "player_name": "Kasper Dolberg",
                  "ranking": 3139
                },
                {
                  "player_name": "Matt Grimes",
                  "ranking": 3140
                },
                {
                  "player_name": "Sem Steijn",
                  "ranking": 3141
                },
                {
                  "player_name": "David Brooks",
                  "ranking": 3142
                },
                {
                  "player_name": "André Silva",
                  "ranking": 3143
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 23.081594925726826,
            "bench_appearance_prob": 0.5491634057148558,
            "market_value_adjustment": 1.0354,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (4 historical appearances) to 23.1 expected mins (appearance prob 0.55)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2686,
                "expected_assists": 0.018,
                "assists": 0.0238,
                "assist_rate": 0.0238,
                "expected_goals": 0.04,
                "goals": 0.0467,
                "goal_rate": 0.0467,
                "shots_on_target": 0.0884,
                "total_shots": 0.3286,
                "rating": 6.6622,
                "minutes": 14.12,
                "total_pass": 6.1845,
                "accurate_pass": 4.5394,
                "duels_won": 0.1927,
                "total_long_balls": 0.2667,
                "accurate_long_balls": 0.2667,
                "total_own_half_passes": 2.3044,
                "accurate_own_half_passes": 1.7709,
                "total_opp_half_passes": 3.8801,
                "accurate_opp_half_passes": 2.7685,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 7.8027,
                "possession_lost": 1.6451,
                "dispossessed": 0.0,
                "duels_lost": 0.1927,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.1927,
                "clearances": 0.5335,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1927,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.5311,
                "total_progression": 10.3862,
                "progressive_carries": 0.2267,
                "shots_off_target": 0.2402
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.2667,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.2267,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1927,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.0265,
                  "totalShots": 0.5065,
                  "expectedGoals": 0.0437,
                  "expectedAssists": 0.0442,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.26862481236457825,
                    "model_output": 0.2686,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4081
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0435
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0377
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0338
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0191
                        }
                      ],
                      "others": -0.0837,
                      "total": 0.2686,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.609256
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.093778
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.089046
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.087178
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.052709
                        }
                      ],
                      "others_margin": -0.270966
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.017969975247979164,
                    "model_output": 0.018,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0412
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0097
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0034
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0023
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0093,
                      "total": 0.018,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.65439
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.244512
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.101357
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.076921
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.07244
                        }
                      ],
                      "others_margin": -0.414714
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.02376284822821617,
                    "model_output": 0.0238,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0229
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0132
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0096
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0059
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.009,
                      "total": 0.0238,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.304301
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.228754
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.208207
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.153995
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.086804
                        }
                      ],
                      "others_margin": -0.320309
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04002155736088753,
                    "model_output": 0.04,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0384
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0081
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0079,
                      "total": 0.04,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.524903
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.157601
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.140288
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.067862
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.064982
                        }
                      ],
                      "others_margin": -0.178359
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04666270688176155,
                    "model_output": 0.0467,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0393
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0077
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0038
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0035
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0032
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.0467,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.50437
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137104
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.07551
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.069631
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.063327
                        }
                      ],
                      "others_margin": -0.044685
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.08840838819742203,
                    "model_output": 0.0884,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1662
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0422
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0106
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0081
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0218,
                      "total": 0.0884,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.712697
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.306093
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.09403
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.072536
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.043787
                        }
                      ],
                      "others_margin": -0.220943
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.32864686846733093,
                    "model_output": 0.3286,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3929
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1942
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0338
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0285
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.028
                        }
                      ],
                      "others": -0.0469,
                      "total": 0.3286,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.392873
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.194219
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.033833
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.02848
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.02795
                        }
                      ],
                      "others_margin": -0.046794
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.662238121032715,
                    "model_output": 6.6622,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0556
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0474
                        },
                        {
                          "name": "rating",
                          "contribution": -0.037
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0098
                        }
                      ],
                      "others": -0.0318,
                      "total": 6.6622,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.055558
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.047356
                        },
                        {
                          "name": "rating",
                          "margin": -0.03695
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.012258
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.009768
                        }
                      ],
                      "others_margin": -0.031923
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "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.0354, quality 0.718)",
              "stats": {
                "key_pass": 0.2781,
                "expected_assists": 0.0186,
                "assists": 0.0246,
                "assist_rate": 0.0246,
                "expected_goals": 0.0414,
                "goals": 0.0483,
                "goal_rate": 0.0483,
                "shots_on_target": 0.0915,
                "total_shots": 0.3403,
                "rating": 6.6622,
                "minutes": 14.12,
                "total_pass": 6.4034,
                "accurate_pass": 4.7001,
                "duels_won": 0.1995,
                "total_long_balls": 0.2761,
                "accurate_long_balls": 0.2761,
                "total_own_half_passes": 2.386,
                "accurate_own_half_passes": 1.8336,
                "total_opp_half_passes": 4.0175,
                "accurate_opp_half_passes": 2.8665,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.0789,
                "possession_lost": 1.7033,
                "dispossessed": 0.0,
                "duels_lost": 0.1995,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.1995,
                "clearances": 0.5524,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1995,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.5853,
                "total_progression": 10.7539,
                "progressive_carries": 0.2347,
                "shots_off_target": 0.2487
              },
              "params": {
                "market_value_eur": 30000000,
                "quality_factor": 0.7176,
                "boost_factor": 1.0354,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.1 to 23.1 expected minutes (appearance prob 0.55)",
              "stats": {
                "key_pass": 0.4172,
                "expected_assists": 0.0279,
                "assists": 0.0369,
                "assist_rate": 0.0369,
                "expected_goals": 0.0621,
                "goals": 0.0725,
                "goal_rate": 0.0725,
                "shots_on_target": 0.1372,
                "total_shots": 0.5104,
                "rating": 6.6622,
                "minutes": 23.08,
                "total_pass": 9.6051,
                "accurate_pass": 7.0502,
                "duels_won": 0.2993,
                "total_long_balls": 0.4142,
                "accurate_long_balls": 0.4142,
                "total_own_half_passes": 3.579,
                "accurate_own_half_passes": 2.7504,
                "total_opp_half_passes": 6.0263,
                "accurate_opp_half_passes": 4.2997,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.1184,
                "possession_lost": 2.5549,
                "dispossessed": 0.0,
                "duels_lost": 0.2993,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2993,
                "clearances": 0.8286,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1995,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3779,
                "total_progression": 16.1308,
                "progressive_carries": 0.352,
                "shots_off_target": 0.373,
                "bench_appearance_probability": 0.549,
                "bench_expected_minutes": 23.08
              },
              "params": {
                "expected_minutes": 23.08,
                "projection_minutes": 14.12,
                "minutes_scale": 1.5,
                "appearance_probability": 0.549
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4172,
                "expected_assists": 0.0279,
                "assists": 0.0369,
                "assist_rate": 0.0369,
                "expected_goals": 0.0621,
                "goals": 0.0725,
                "goal_rate": 0.0725,
                "shots_on_target": 0.1372,
                "total_shots": 0.5104,
                "rating": 6.6622,
                "minutes": 23.08,
                "total_pass": 9.6051,
                "accurate_pass": 7.0502,
                "duels_won": 0.2993,
                "total_long_balls": 0.4142,
                "accurate_long_balls": 0.4142,
                "total_own_half_passes": 3.579,
                "accurate_own_half_passes": 2.7504,
                "total_opp_half_passes": 6.0263,
                "accurate_opp_half_passes": 4.2997,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.1184,
                "possession_lost": 2.5549,
                "dispossessed": 0.0,
                "duels_lost": 0.2993,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2993,
                "clearances": 0.8286,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1995,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3779,
                "total_progression": 16.1308,
                "progressive_carries": 0.352,
                "shots_off_target": 0.373,
                "bench_appearance_probability": 0.549,
                "bench_expected_minutes": 23.08
              },
              "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.4172,
                "expected_assists": 0.0279,
                "assist_rate": 0.0369,
                "assists": 0,
                "expected_goals": 0.0621,
                "goal_rate": 0.0725,
                "goals": 0,
                "shots_on_target": 0.1372,
                "total_shots": 0.5104,
                "rating": 6.6622,
                "minutes": 23.08,
                "total_pass": 9.6051,
                "accurate_pass": 7.0502,
                "duels_won": 0.2993,
                "total_long_balls": 0.4142,
                "accurate_long_balls": 0.4142,
                "total_own_half_passes": 3.579,
                "accurate_own_half_passes": 2.7504,
                "total_opp_half_passes": 6.0263,
                "accurate_opp_half_passes": 4.2997,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.1184,
                "possession_lost": 2.5549,
                "dispossessed": 0.0,
                "duels_lost": 0.2993,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2993,
                "clearances": 0.8286,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1995,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3779,
                "total_progression": 16.1308,
                "progressive_carries": 0.352,
                "shots_off_target": 0.373,
                "bench_appearance_probability": 0.549,
                "bench_expected_minutes": 23.08,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.549,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 0.4172,
                "expected_assists": 0.0279,
                "assist_rate": 0.0369,
                "assists": 0,
                "expected_goals": 0.0621,
                "goal_rate": 0.0725,
                "goals": 0,
                "shots_on_target": 0.1372,
                "total_shots": 0.5104,
                "rating": 6.6622,
                "minutes": 23.08,
                "total_pass": 9.6051,
                "accurate_pass": 7.0502,
                "duels_won": 0.2993,
                "total_long_balls": 0.4142,
                "accurate_long_balls": 0.4142,
                "total_own_half_passes": 3.579,
                "accurate_own_half_passes": 2.7504,
                "total_opp_half_passes": 6.0263,
                "accurate_opp_half_passes": 4.2997,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.1184,
                "possession_lost": 2.5549,
                "dispossessed": 0.0,
                "duels_lost": 0.2993,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.2993,
                "clearances": 0.8286,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.1995,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.3779,
                "total_progression": 16.1308,
                "progressive_carries": 0.352,
                "shots_off_target": 0.373,
                "bench_appearance_probability": 0.549,
                "bench_expected_minutes": 23.08,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3138,
                "fifa_rank": 1511.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            }
          ]
        },
        "Emile Smith Rowe": {
          "player_id": 867445,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 32,
          "height": 182,
          "market_value": 18300000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0172,
            "assist_rate": 0.0394,
            "assists": 0,
            "expected_goals": 0.0274,
            "goal_rate": 0.0429,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.6874,
            "minutes": 18,
            "total_pass": 11,
            "accurate_pass": 10,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 2.3365,
            "dispossessed": 0.544,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0172,
            "ball_carries": 3,
            "total_progression": 4,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.706,
            "bench_expected_minutes": 18.45,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0269,
            "projected_assists": 0,
            "assist_probability": 0.017,
            "finishing_factor": 1.0198,
            "creation_factor": 1.1794,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 10,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "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": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "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": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 11,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 6,
                "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"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0581,
                "expected_assists": 0.0242,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 16,
                "key_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 72,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0598,
                "expected_assists": 0.0025,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 19,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 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": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 79,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0435,
                "expected_assists": 0.0232,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 47,
                "accurate_pass": 40,
                "tackles": 2,
                "tackles_won": 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": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0887,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "total_pass": 15,
                "accurate_pass": 14,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 78,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0557,
                "expected_assists": 0.0204,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 35,
                "accurate_pass": 34,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024004,
              "match_date": "2026-04-25",
              "home_team": "Fulham",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 76,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0377,
                "expected_assists": 0.0174,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 19,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025031,
              "match_date": "2026-04-18",
              "home_team": "Brentford",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Brentford",
              "stats": {
                "minutes": 67,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0422,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 32,
                "key_pass": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3121,
            "combined_rank_score": 1081.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 744.0,
            "sofascore_rating": 6.6676,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1419.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6874,
            "source_file": "data/player_rankings.csv",
            "player_name": "Emile Smith Rowe",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Youri Baas",
                  "ranking": 3116
                },
                {
                  "player_name": "Martín Satriano",
                  "ranking": 3117
                },
                {
                  "player_name": "Marcos Leonardo",
                  "ranking": 3118
                },
                {
                  "player_name": "Chidera Ejuke",
                  "ranking": 3119
                },
                {
                  "player_name": "Adrián Martínez",
                  "ranking": 3120
                }
              ],
              "lower": [
                {
                  "player_name": "Santiago Giménez",
                  "ranking": 3122
                },
                {
                  "player_name": "Mykola Shaparenko",
                  "ranking": 3123
                },
                {
                  "player_name": "Kostas Tsimikas",
                  "ranking": 3124
                },
                {
                  "player_name": "Kepa",
                  "ranking": 3125
                },
                {
                  "player_name": "Nahuel Molina",
                  "ranking": 3126
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.45,
            "bench_appearance_prob": 0.706,
            "market_value_adjustment": 1.0036,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (41 historical appearances) to 18.4 expected mins (appearance prob 0.71); FBref playing time empirical prior: 1.0 sub appearances, 15.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3455,
                "expected_assists": 0.0247,
                "assists": 0.0377,
                "assist_rate": 0.0377,
                "expected_goals": 0.0393,
                "goals": 0.0411,
                "goal_rate": 0.0411,
                "shots_on_target": 0.1603,
                "total_shots": 0.4591,
                "rating": 6.6874,
                "minutes": 17.72,
                "total_pass": 10.1265,
                "accurate_pass": 9.1141,
                "duels_won": 0.5431,
                "total_long_balls": 0.2457,
                "accurate_long_balls": 0.1121,
                "total_own_half_passes": 3.0325,
                "accurate_own_half_passes": 2.7704,
                "total_opp_half_passes": 7.0939,
                "accurate_opp_half_passes": 6.3436,
                "crosses_total": 0.0572,
                "crosses_accurate": 0.0,
                "touches": 13.661,
                "possession_lost": 2.2361,
                "dispossessed": 0.542,
                "duels_lost": 1.3781,
                "aerial_won": 0.0,
                "aerial_lost": 0.3917,
                "interceptions": 0.2156,
                "tackles_won": 0.2332,
                "tackles": 0.3314,
                "clearances": 0.082,
                "total_contest": 0.3483,
                "won_contest": 0.153,
                "challenges_lost": 0.082,
                "fouls": 0.1671,
                "fouls_drawn": 0.0588,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0839,
                "xgot": 0.0247,
                "ball_carries": 3.1386,
                "total_progression": 3.5974,
                "progressive_carries": 0.197,
                "shots_off_target": 0.2988
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Arsenal",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Aston Villa",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Brentford",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.153,
                  "totalShots": 0.643,
                  "expectedGoals": 0.0553,
                  "expectedAssists": 0.0148,
                  "onTargetScoringAttempt": 0.2053
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.34547924995422363,
                    "model_output": 0.3455,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3949
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0657
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0391
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0356
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0163
                        }
                      ],
                      "others": 0.0026,
                      "total": 0.3455,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.582504
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.141057
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.094549
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.094424
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.046359
                        }
                      ],
                      "others_margin": 0.007577
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.024688242003321648,
                    "model_output": 0.0247,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0366
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0084
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0065
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0034
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0039,
                      "total": 0.0247,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.555754
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.186481
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.172052
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.105341
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.0806
                        }
                      ],
                      "others_margin": -0.146482
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03769367188215256,
                    "model_output": 0.0377,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0257
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0108
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0076
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0029
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.0377,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.348156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.191908
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.160842
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.158482
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.0765
                        }
                      ],
                      "others_margin": -0.058111
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0393194742500782,
                    "model_output": 0.0393,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0442
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0054
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0046
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0033
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.0393,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63644
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.103657
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.087644
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.068
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.036341
                        }
                      ],
                      "others_margin": -0.146347
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.041055310517549515,
                    "model_output": 0.0411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0437
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0063
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0037
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0023
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0015
                        }
                      ],
                      "others": -0.0053,
                      "total": 0.0411,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.579881
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.120628
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.077936
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.050043
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.030879
                        }
                      ],
                      "others_margin": -0.124108
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.16029050946235657,
                    "model_output": 0.1603,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1448
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0295
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0163
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0117
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0045
                        }
                      ],
                      "others": -0.0149,
                      "total": 0.1603,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.587157
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.17772
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.101985
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.067551
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.025594
                        }
                      ],
                      "others_margin": -0.089059
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.45911508798599243,
                    "model_output": 0.4591,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3958
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1766
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.057
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.023
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0219
                        }
                      ],
                      "others": -0.0213,
                      "total": 0.4591,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.395789
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.176587
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057028
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.022971
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.021937
                        }
                      ],
                      "others_margin": -0.021401
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.68735408782959,
                    "model_output": 6.6874,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0693
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0377
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.027
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0085
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.008
                        }
                      ],
                      "others": -0.0182,
                      "total": 6.6874,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.069335
                        },
                        {
                          "name": "rating",
                          "margin": -0.037745
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.027015
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.008497
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007983
                        }
                      ],
                      "others_margin": -0.018123
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 41,
                  "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.0036, quality 0.614)",
              "stats": {
                "key_pass": 0.3467,
                "expected_assists": 0.0248,
                "assists": 0.0378,
                "assist_rate": 0.0378,
                "expected_goals": 0.0395,
                "goals": 0.0412,
                "goal_rate": 0.0412,
                "shots_on_target": 0.1609,
                "total_shots": 0.4608,
                "rating": 6.6874,
                "minutes": 17.72,
                "total_pass": 10.163,
                "accurate_pass": 9.1469,
                "duels_won": 0.5451,
                "total_long_balls": 0.2466,
                "accurate_long_balls": 0.1125,
                "total_own_half_passes": 3.0434,
                "accurate_own_half_passes": 2.7804,
                "total_opp_half_passes": 7.1194,
                "accurate_opp_half_passes": 6.3664,
                "crosses_total": 0.0574,
                "crosses_accurate": 0.0,
                "touches": 13.7102,
                "possession_lost": 2.2441,
                "dispossessed": 0.544,
                "duels_lost": 1.3831,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2164,
                "tackles_won": 0.234,
                "tackles": 0.3326,
                "clearances": 0.0823,
                "total_contest": 0.3496,
                "won_contest": 0.1536,
                "challenges_lost": 0.0823,
                "fouls": 0.1677,
                "fouls_drawn": 0.059,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0842,
                "xgot": 0.0248,
                "ball_carries": 3.1499,
                "total_progression": 3.6104,
                "progressive_carries": 0.1977,
                "shots_off_target": 0.2999
              },
              "params": {
                "market_value_eur": 18300000,
                "quality_factor": 0.614,
                "boost_factor": 1.0036,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0009)",
              "stats": {
                "key_pass": 0.3467,
                "expected_assists": 0.0248,
                "assists": 0.0378,
                "assist_rate": 0.0378,
                "expected_goals": 0.0395,
                "goals": 0.0412,
                "goal_rate": 0.0412,
                "shots_on_target": 0.1607,
                "total_shots": 0.4615,
                "rating": 6.6874,
                "minutes": 17.72,
                "total_pass": 10.163,
                "accurate_pass": 9.1469,
                "duels_won": 0.5451,
                "total_long_balls": 0.2466,
                "accurate_long_balls": 0.1125,
                "total_own_half_passes": 3.0434,
                "accurate_own_half_passes": 2.7804,
                "total_opp_half_passes": 7.1194,
                "accurate_opp_half_passes": 6.3664,
                "crosses_total": 0.0573,
                "crosses_accurate": 0.0,
                "touches": 13.7102,
                "possession_lost": 2.2441,
                "dispossessed": 0.544,
                "duels_lost": 1.3831,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2162,
                "tackles_won": 0.2338,
                "tackles": 0.3326,
                "clearances": 0.0823,
                "total_contest": 0.3496,
                "won_contest": 0.1536,
                "challenges_lost": 0.0823,
                "fouls": 0.1675,
                "fouls_drawn": 0.0589,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0842,
                "xgot": 0.0248,
                "ball_carries": 3.1499,
                "total_progression": 3.6104,
                "progressive_carries": 0.1977,
                "shots_off_target": 0.2999
              },
              "params": {
                "blend_weight": 0.0009,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1969,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.7 to 18.4 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0258,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0411,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0258,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45
              },
              "params": {
                "expected_minutes": 18.45,
                "projection_minutes": 17.72,
                "minutes_scale": 1.0412,
                "appearance_probability": 0.706
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0258,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0411,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0258,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0258,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0411,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0258,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.0198,
                "creation_factor": 1.1794
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 0.706
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0411,
                  "after": 0.0274
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0258,
                  "after": 0.0172
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.0198,
                "creation_factor": 1.1794,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3121,
                "fifa_rank": 1419.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.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0269,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0198,
                "creation_factor": 1.1794,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0269,
                "goal_rate": 0.0429,
                "scorer_weight": 0.0279,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0205,
                "finishing_factor": 1.0198,
                "appearance_weight": 0.706,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0269,
                "projected_assists": 0,
                "assist_probability": 0.017,
                "finishing_factor": 1.0198,
                "creation_factor": 1.1794,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.017,
                "assist_rate": 0.0394,
                "provider_weight": 0.0203,
                "squad_weight_total": 0.758,
                "weight_share": 0.0268,
                "creation_factor": 1.1794,
                "appearance_weight": 0.706,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Kevin": {
          "player_id": 1112879,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 176,
          "market_value": 26000000,
          "stats": {
            "expected_goals": 0.0391,
            "goal_rate": 0.082,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0225,
            "key_pass": 0,
            "rating": 6.6419,
            "minutes": 19,
            "total_pass": 7,
            "accurate_pass": 5,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 4.6576,
            "dispossessed": 0.4481,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0202,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0752,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 29,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.739,
            "bench_expected_minutes": 18.97,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0381,
            "projected_assists": 0,
            "assist_probability": 0.0222,
            "finishing_factor": 1.2453,
            "creation_factor": 0.854,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 14,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1469,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 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": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0366,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 3,
                "interceptions": 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": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 18,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0658,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0379,
                "total_shots": 0,
                "total_pass": 7,
                "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": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 17,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 60,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0398,
                "expected_assists": 0.0218,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 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": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0183,
                "expected_assists": 0.0477,
                "total_shots": 1,
                "total_pass": 15,
                "accurate_pass": 10,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 28,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0253,
                "expected_assists": 0.0003,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 2,
                "tackles_won": 2,
                "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": 14024011,
              "match_date": "2026-02-22",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 44,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1221,
                "expected_assists": 0.0187,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025212,
              "match_date": "2026-02-11",
              "home_team": "Manchester City",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0274,
                "expected_assists": 0.071,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3248,
            "combined_rank_score": 1190.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 615.0,
            "sofascore_rating": 6.7731,
            "sofascore_appearances": 26.0,
            "fifa_rank": 1766.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.6419,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kevin",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Håkon Evjen",
                  "ranking": 3243
                },
                {
                  "player_name": "Jayden Bogle",
                  "ranking": 3244
                },
                {
                  "player_name": "Jérémie Boga",
                  "ranking": 3245
                },
                {
                  "player_name": "Jean Butez",
                  "ranking": 3246
                },
                {
                  "player_name": "Lorenzo Pellegrini",
                  "ranking": 3247
                }
              ],
              "lower": [
                {
                  "player_name": "Dodô",
                  "ranking": 3249
                },
                {
                  "player_name": "Pervis Estupiñán",
                  "ranking": 3250
                },
                {
                  "player_name": "Teun Koopmeiners",
                  "ranking": 3251
                },
                {
                  "player_name": "Yann Aurel Bisseck",
                  "ranking": 3252
                },
                {
                  "player_name": "Christian Kofane",
                  "ranking": 3253
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.753,
          "history_matches": 31,
          "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": 31,
            "data_confidence": 0.753,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.97,
            "bench_appearance_prob": 0.739,
            "market_value_adjustment": 1.0075,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 13.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.02
            },
            "rationale": "Bench projection scaled from XGBoost F_service (31 historical appearances) to 19.0 expected mins (appearance prob 0.74); FBref playing time empirical prior: 2.0 sub appearances, 13.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0611,
                "goals": 0.0899,
                "goal_rate": 0.0899,
                "shots_on_target": 0.3067,
                "total_shots": 0.8458,
                "expected_assists": 0.0352,
                "key_pass": 0.3746,
                "rating": 6.6419,
                "minutes": 20.88,
                "total_pass": 7.6843,
                "accurate_pass": 5.7763,
                "duels_won": 1.9357,
                "total_long_balls": 0.6221,
                "accurate_long_balls": 0.3075,
                "total_opp_half_passes": 5.5966,
                "accurate_opp_half_passes": 4.0775,
                "crosses_total": 0.9612,
                "crosses_accurate": 0.1193,
                "touches": 14.7713,
                "possession_lost": 5.0884,
                "dispossessed": 0.4448,
                "duels_lost": 2.5343,
                "aerial_lost": 0.2888,
                "total_contest": 1.5872,
                "won_contest": 0.6897,
                "ball_recovery": 1.1084,
                "challenges_lost": 0.4112,
                "fouls": 0.492,
                "fouls_drawn": 0.4431,
                "assists": 0.022,
                "assist_rate": 0.022,
                "interceptions": 0.1741,
                "tackles_won": 0.3446,
                "tackles": 0.761,
                "clearances": 0.1618,
                "blocks": 0.0,
                "big_chances_created": 0.0159,
                "big_chances_missed": 0.0,
                "xgot": 0.1176,
                "offsides": 0.0871,
                "ball_carries": 4.3839,
                "total_progression": 31.8028,
                "progressive_carries": 1.0441,
                "shots_off_target": 0.5391
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.151,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1283,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.1091,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0927,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0788,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.067,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0569,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0484,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Sunderland",
                    "minutes": 44.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-11",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.035,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0502,
                  "totalOppositionHalfPasses": 6.5611,
                  "accurateOppositionHalfPasses": 4.8685,
                  "accuratePass": 6.7597,
                  "totalShots": 0.8291
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06113840639591217,
                    "model_output": 0.0611,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0904
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.019
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0037
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0137,
                      "total": 0.0611,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.609991
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.193885
                        },
                        {
                          "name": "goals",
                          "margin": -0.087827
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.046305
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.033535
                        }
                      ],
                      "others_margin": -0.203138
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08987140655517578,
                    "model_output": 0.0899,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0829
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0106
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0057
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.004
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": 0.0027
                        }
                      ],
                      "others": -0.0119,
                      "total": 0.0899,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.52753
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.092611
                        },
                        {
                          "name": "goals",
                          "margin": -0.05351
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.039569
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": 0.026747
                        }
                      ],
                      "others_margin": -0.124919
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.30666032433509827,
                    "model_output": 0.3067,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1969
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0337
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0138
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0137
                        },
                        {
                          "name": "goals",
                          "contribution": -0.013
                        }
                      ],
                      "others": 0.0142,
                      "total": 0.3067,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.457549
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.104474
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.046342
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.045758
                        },
                        {
                          "name": "goals",
                          "margin": -0.043367
                        }
                      ],
                      "others_margin": 0.047223
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8457579016685486,
                    "model_output": 0.8458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4671
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1374
                        },
                        {
                          "name": "goals",
                          "contribution": -0.046
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0422
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0398
                        }
                      ],
                      "others": 0.0336,
                      "total": 0.8458,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.467097
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137369
                        },
                        {
                          "name": "goals",
                          "margin": -0.04599
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.04224
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.039839
                        }
                      ],
                      "others_margin": 0.033385
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03517727926373482,
                    "model_output": 0.0352,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0194
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0054
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0039
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0028
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0022
                        }
                      ],
                      "others": 0.0001,
                      "total": 0.0352,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.35813
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.127006
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.10367
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.080217
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.063632
                        }
                      ],
                      "others_margin": 1e-06
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3746051788330078,
                    "model_output": 0.3746,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.245
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0295
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0213
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0172
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.0127,
                      "total": 0.3746,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.446336
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.070107
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.053783
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.04386
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.036947
                        }
                      ],
                      "others_margin": -0.033584
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.641922473907471,
                    "model_output": 6.6419,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0612
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.012
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0106
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.01
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0097
                        }
                      ],
                      "others": -0.0663,
                      "total": 6.6419,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.06121
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.01203
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010645
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.010025
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.009696
                        }
                      ],
                      "others_margin": -0.066203
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 31,
                  "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.0075, quality 0.686)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0905,
                "goal_rate": 0.0905,
                "shots_on_target": 0.309,
                "total_shots": 0.8521,
                "expected_assists": 0.0354,
                "key_pass": 0.3774,
                "rating": 6.6419,
                "minutes": 20.88,
                "total_pass": 7.7419,
                "accurate_pass": 5.8196,
                "duels_won": 1.9502,
                "total_long_balls": 0.6268,
                "accurate_long_balls": 0.3098,
                "total_opp_half_passes": 5.6386,
                "accurate_opp_half_passes": 4.1081,
                "crosses_total": 0.9684,
                "crosses_accurate": 0.1202,
                "touches": 14.8821,
                "possession_lost": 5.1266,
                "dispossessed": 0.4481,
                "duels_lost": 2.5533,
                "aerial_lost": 0.291,
                "total_contest": 1.5991,
                "won_contest": 0.6949,
                "ball_recovery": 1.1167,
                "challenges_lost": 0.4143,
                "fouls": 0.4957,
                "fouls_drawn": 0.4464,
                "assists": 0.0222,
                "assist_rate": 0.0222,
                "interceptions": 0.1754,
                "tackles_won": 0.3472,
                "tackles": 0.7667,
                "clearances": 0.163,
                "blocks": 0.0,
                "big_chances_created": 0.016,
                "big_chances_missed": 0.0,
                "xgot": 0.1185,
                "offsides": 0.0878,
                "ball_carries": 4.4168,
                "total_progression": 32.0413,
                "progressive_carries": 1.0519,
                "shots_off_target": 0.5431
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0075,
                "reference_quality": 0.505,
                "history_matches": 31,
                "history_shrink": 0.1389,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0018)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0903,
                "goal_rate": 0.0903,
                "shots_on_target": 0.3084,
                "total_shots": 0.8506,
                "expected_assists": 0.0354,
                "key_pass": 0.3774,
                "rating": 6.6419,
                "minutes": 20.88,
                "total_pass": 7.7419,
                "accurate_pass": 5.8196,
                "duels_won": 1.9502,
                "total_long_balls": 0.6268,
                "accurate_long_balls": 0.3098,
                "total_opp_half_passes": 5.6386,
                "accurate_opp_half_passes": 4.1081,
                "crosses_total": 0.9694,
                "crosses_accurate": 0.1202,
                "touches": 14.8821,
                "possession_lost": 5.1266,
                "dispossessed": 0.4481,
                "duels_lost": 2.5533,
                "aerial_lost": 0.291,
                "total_contest": 1.5991,
                "won_contest": 0.6949,
                "ball_recovery": 1.1167,
                "challenges_lost": 0.4143,
                "fouls": 0.499,
                "fouls_drawn": 0.4456,
                "assists": 0.0222,
                "assist_rate": 0.0222,
                "interceptions": 0.1751,
                "tackles_won": 0.3466,
                "tackles": 0.7667,
                "clearances": 0.163,
                "blocks": 0.0,
                "big_chances_created": 0.016,
                "big_chances_missed": 0.0,
                "xgot": 0.1185,
                "offsides": 0.0876,
                "ball_carries": 4.4168,
                "total_progression": 32.0413,
                "progressive_carries": 1.0519,
                "shots_off_target": 0.5431
              },
              "params": {
                "blend_weight": 0.0018,
                "history_matches": 31,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.232,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.9 to 19.0 expected minutes (appearance prob 0.74)",
              "stats": {
                "expected_goals": 0.056,
                "goals": 0.082,
                "goal_rate": 0.082,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0322,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assists": 0.0202,
                "assist_rate": 0.0202,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.1077,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97
              },
              "params": {
                "expected_minutes": 18.97,
                "projection_minutes": 20.88,
                "minutes_scale": 0.9085,
                "appearance_probability": 0.739
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.056,
                "goals": 0.082,
                "goal_rate": 0.082,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0322,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assists": 0.0202,
                "assist_rate": 0.0202,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.1077,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.056,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0322,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.1077,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.2453,
                "creation_factor": 0.854
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 0.739
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.056,
                  "after": 0.0391
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0322,
                  "after": 0.0225
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.2453,
                "creation_factor": 0.854,
                "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": 3248,
                "fifa_rank": 1766.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.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0381,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2453,
                "creation_factor": 0.854,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0381,
                "goal_rate": 0.082,
                "scorer_weight": 0.0487,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0356,
                "finishing_factor": 1.2453,
                "appearance_weight": 0.739,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0381,
                "projected_assists": 0,
                "assist_probability": 0.0222,
                "finishing_factor": 1.2453,
                "creation_factor": 0.854,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0222,
                "assist_rate": 0.0202,
                "provider_weight": 0.0192,
                "squad_weight_total": 0.758,
                "weight_share": 0.0254,
                "creation_factor": 0.854,
                "appearance_weight": 0.739,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Rodrigo Muniz": {
          "player_id": 1015256,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 184,
          "market_value": 22000000,
          "stats": {
            "expected_goals": 0.0703,
            "goal_rate": 0.1426,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0047,
            "key_pass": 0,
            "rating": 6.6066,
            "minutes": 17,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 3,
            "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.3505,
            "dispossessed": 0.2076,
            "duels_lost": 2,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0164,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 0,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.736,
            "bench_expected_minutes": 16.71,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.067,
            "projected_assists": 0,
            "assist_probability": 0.0047,
            "finishing_factor": 1.25,
            "creation_factor": 0.8818,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 14,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "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"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "clearances": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 12,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.382,
                "expected_assists": 0.0001,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 2,
                "accurate_pass": 1,
                "key_pass": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0016,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "key_pass": 1,
                "clearances": 1,
                "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"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 72,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1592,
                "expected_assists": 0.0083,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 4,
                "tackles": 1,
                "aerial_won": 6,
                "duels_won": 10,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 67,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1511,
                "expected_assists": 0.0058,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 6,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7094,
                "expected_assists": 0.0005,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 10,
                "accurate_pass": 3,
                "aerial_won": 7,
                "duels_won": 10
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 17,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 3,
                "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": 14024004,
              "match_date": "2026-04-25",
              "home_team": "Fulham",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 24,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.114,
                "expected_assists": 0.0082,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 6,
                "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": 3299,
            "combined_rank_score": 1249.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1800.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6066,
            "source_file": "data/player_rankings.csv",
            "player_name": "Rodrigo Muniz",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Raíllo",
                  "ranking": 3300
                },
                {
                  "player_name": "Gelson Martins",
                  "ranking": 3301
                },
                {
                  "player_name": "Abel Bretones",
                  "ranking": 3302
                },
                {
                  "player_name": "Chiquinho",
                  "ranking": 3303
                },
                {
                  "player_name": "Kaiki",
                  "ranking": 3304
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.751,
          "history_matches": 26,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 26,
            "data_confidence": 0.751,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 16.71,
            "bench_appearance_prob": 0.736,
            "market_value_adjustment": 1.007,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 9.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0067
            },
            "rationale": "Bench projection scaled from XGBoost F_service (26 historical appearances) to 16.7 expected mins (appearance prob 0.74); FBref playing time empirical prior: 1.0 sub appearances, 9.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0991,
                "goals": 0.14,
                "goal_rate": 0.14,
                "shots_on_target": 0.2879,
                "total_shots": 0.8229,
                "expected_assists": 0.0066,
                "key_pass": 0.2096,
                "rating": 6.6066,
                "minutes": 16.51,
                "total_pass": 3.0958,
                "accurate_pass": 1.5125,
                "duels_won": 2.9588,
                "total_long_balls": 0.0798,
                "accurate_long_balls": 0.0319,
                "total_opp_half_passes": 2.3736,
                "accurate_opp_half_passes": 1.0798,
                "crosses_total": 0.0519,
                "crosses_accurate": 0.0,
                "touches": 7.5039,
                "possession_lost": 3.2874,
                "dispossessed": 0.2062,
                "duels_lost": 2.1839,
                "aerial_lost": 1.5933,
                "total_contest": 0.1684,
                "won_contest": 0.0519,
                "ball_recovery": 0.1368,
                "challenges_lost": 0.0611,
                "fouls": 0.2068,
                "fouls_drawn": 0.3258,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.133,
                "tackles": 0.2212,
                "clearances": 0.5817,
                "blocks": 0.0638,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.023,
                "offsides": 0.0611,
                "ball_carries": 1.0872,
                "total_progression": 0.0,
                "progressive_carries": 0.0336,
                "shots_off_target": 0.535
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.1522,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1294,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.11,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0935,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0795,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0675,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Arsenal",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0415,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Aston Villa",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0353,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1235,
                  "totalOppositionHalfPasses": 3.761,
                  "accurateOppositionHalfPasses": 1.5402,
                  "accuratePass": 2.2262,
                  "totalShots": 1.0027
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09914231300354004,
                    "model_output": 0.0991,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0903
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0081
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0068
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0031
                        }
                      ],
                      "others": 0.0033,
                      "total": 0.0991,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.609251
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.07779
                        },
                        {
                          "name": "goals",
                          "margin": -0.076751
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.071032
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.03143
                        }
                      ],
                      "others_margin": 0.032926
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.13998064398765564,
                    "model_output": 0.14,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0671
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0246
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0073
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0049
                        }
                      ],
                      "others": 0.0109,
                      "total": 0.14,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.402981
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.167187
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.122978
                        },
                        {
                          "name": "goals",
                          "margin": -0.052829
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.03758
                        }
                      ],
                      "others_margin": 0.080912
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.28788578510284424,
                    "model_output": 0.2879,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2219
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0188
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0154
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0139
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0134
                        }
                      ],
                      "others": -0.0225,
                      "total": 0.2879,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.534233
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.061651
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.050964
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.045837
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.044113
                        }
                      ],
                      "others_margin": -0.075285
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8228614926338196,
                    "model_output": 0.8229,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.6009
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0859
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0666
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0367
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0331
                        }
                      ],
                      "others": 0.0202,
                      "total": 0.8229,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.600855
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.08592
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.066642
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.036651
                        },
                        {
                          "name": "goals",
                          "margin": -0.03309
                        }
                      ],
                      "others_margin": 0.020127
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.006602001376450062,
                    "model_output": 0.0066,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0245
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0112
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0068
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0034
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0102,
                      "total": 0.0066,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.478149
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.329423
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.271482
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.17068
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.097531
                        }
                      ],
                      "others_margin": -0.931155
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.20955617725849152,
                    "model_output": 0.2096,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2686
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0373
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0313
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0273
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0132
                        }
                      ],
                      "others": -0.0932,
                      "total": 0.2096,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.502158
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.095054
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.087408
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.083011
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.042789
                        }
                      ],
                      "others_margin": -0.367357
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.606597900390625,
                    "model_output": 6.6066,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0497
                        },
                        {
                          "name": "rating",
                          "contribution": -0.024
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.012
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0119
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0534,
                      "total": 6.6066,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.049721
                        },
                        {
                          "name": "rating",
                          "margin": -0.024029
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.012017
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011917
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010685
                        }
                      ],
                      "others_margin": -0.053313
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 26,
                  "role_matches": 16,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0070, quality 0.650)",
              "stats": {
                "expected_goals": 0.0998,
                "goals": 0.141,
                "goal_rate": 0.141,
                "shots_on_target": 0.2899,
                "total_shots": 0.8286,
                "expected_assists": 0.0066,
                "key_pass": 0.211,
                "rating": 6.6066,
                "minutes": 16.51,
                "total_pass": 3.1175,
                "accurate_pass": 1.5231,
                "duels_won": 2.9795,
                "total_long_balls": 0.0804,
                "accurate_long_balls": 0.0321,
                "total_opp_half_passes": 2.3902,
                "accurate_opp_half_passes": 1.0874,
                "crosses_total": 0.0523,
                "crosses_accurate": 0.0,
                "touches": 7.5564,
                "possession_lost": 3.3104,
                "dispossessed": 0.2076,
                "duels_lost": 2.1992,
                "aerial_lost": 1.6045,
                "total_contest": 0.1696,
                "won_contest": 0.0523,
                "ball_recovery": 0.1378,
                "challenges_lost": 0.0615,
                "fouls": 0.2082,
                "fouls_drawn": 0.3281,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1339,
                "tackles": 0.2227,
                "clearances": 0.5858,
                "blocks": 0.0642,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0232,
                "offsides": 0.0615,
                "ball_carries": 1.0948,
                "total_progression": 0.0,
                "progressive_carries": 0.0338,
                "shots_off_target": 0.5387
              },
              "params": {
                "market_value_eur": 22000000,
                "quality_factor": 0.6503,
                "boost_factor": 1.007,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0007)",
              "stats": {
                "expected_goals": 0.0998,
                "goals": 0.1409,
                "goal_rate": 0.1409,
                "shots_on_target": 0.291,
                "total_shots": 0.8293,
                "expected_assists": 0.0066,
                "key_pass": 0.211,
                "rating": 6.6066,
                "minutes": 16.51,
                "total_pass": 3.1175,
                "accurate_pass": 1.5231,
                "duels_won": 2.9795,
                "total_long_balls": 0.0804,
                "accurate_long_balls": 0.0321,
                "total_opp_half_passes": 2.3902,
                "accurate_opp_half_passes": 1.0874,
                "crosses_total": 0.0523,
                "crosses_accurate": 0.0,
                "touches": 7.5564,
                "possession_lost": 3.3104,
                "dispossessed": 0.2076,
                "duels_lost": 2.1992,
                "aerial_lost": 1.6045,
                "total_contest": 0.1696,
                "won_contest": 0.0523,
                "ball_recovery": 0.1378,
                "challenges_lost": 0.0615,
                "fouls": 0.2081,
                "fouls_drawn": 0.3279,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1338,
                "tackles": 0.2227,
                "clearances": 0.5858,
                "blocks": 0.0642,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0232,
                "offsides": 0.0615,
                "ball_carries": 1.0948,
                "total_progression": 0.0,
                "progressive_carries": 0.0338,
                "shots_off_target": 0.5387
              },
              "params": {
                "blend_weight": 0.0007,
                "history_matches": 26,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1834,
                "prior_reliability": 0.0067,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.5 to 16.7 expected minutes (appearance prob 0.74)",
              "stats": {
                "expected_goals": 0.101,
                "goals": 0.1426,
                "goal_rate": 0.1426,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0067,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71
              },
              "params": {
                "expected_minutes": 16.71,
                "projection_minutes": 16.51,
                "minutes_scale": 1.0121,
                "appearance_probability": 0.736
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.101,
                "goals": 0.1426,
                "goal_rate": 0.1426,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0067,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.101,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0067,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 0.736
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.101,
                  "after": 0.0703
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818,
                "fifa_overall": 76.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": 3299,
                "fifa_rank": 1800.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.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.067,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.067,
                "goal_rate": 0.1426,
                "scorer_weight": 0.0879,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0643,
                "finishing_factor": 1.25,
                "appearance_weight": 0.736,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.067,
                "projected_assists": 0,
                "assist_probability": 0.0047,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0047,
                "assist_rate": 0.0,
                "provider_weight": 0.0041,
                "squad_weight_total": 0.758,
                "weight_share": 0.0055,
                "creation_factor": 0.8818,
                "appearance_weight": 0.736,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Kevin": {
          "player_id": 1112879,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 176,
          "market_value": 26000000,
          "stats": {
            "expected_goals": 0.0391,
            "goal_rate": 0.082,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0225,
            "key_pass": 0,
            "rating": 6.6419,
            "minutes": 19,
            "total_pass": 7,
            "accurate_pass": 5,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 4.6576,
            "dispossessed": 0.4481,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0202,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0752,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 29,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.739,
            "bench_expected_minutes": 18.97,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0381,
            "projected_assists": 0,
            "assist_probability": 0.0222,
            "finishing_factor": 1.2453,
            "creation_factor": 0.854,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 14,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1469,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 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": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0366,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 3,
                "interceptions": 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": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 18,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0658,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0379,
                "total_shots": 0,
                "total_pass": 7,
                "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": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 17,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 60,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0398,
                "expected_assists": 0.0218,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 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": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0183,
                "expected_assists": 0.0477,
                "total_shots": 1,
                "total_pass": 15,
                "accurate_pass": 10,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 28,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0253,
                "expected_assists": 0.0003,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 2,
                "tackles_won": 2,
                "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": 14024011,
              "match_date": "2026-02-22",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 44,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1221,
                "expected_assists": 0.0187,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 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": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025212,
              "match_date": "2026-02-11",
              "home_team": "Manchester City",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 30,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0274,
                "expected_assists": 0.071,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3248,
            "combined_rank_score": 1190.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 615.0,
            "sofascore_rating": 6.7731,
            "sofascore_appearances": 26.0,
            "fifa_rank": 1766.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.6419,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kevin",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Håkon Evjen",
                  "ranking": 3243
                },
                {
                  "player_name": "Jayden Bogle",
                  "ranking": 3244
                },
                {
                  "player_name": "Jérémie Boga",
                  "ranking": 3245
                },
                {
                  "player_name": "Jean Butez",
                  "ranking": 3246
                },
                {
                  "player_name": "Lorenzo Pellegrini",
                  "ranking": 3247
                }
              ],
              "lower": [
                {
                  "player_name": "Dodô",
                  "ranking": 3249
                },
                {
                  "player_name": "Pervis Estupiñán",
                  "ranking": 3250
                },
                {
                  "player_name": "Teun Koopmeiners",
                  "ranking": 3251
                },
                {
                  "player_name": "Yann Aurel Bisseck",
                  "ranking": 3252
                },
                {
                  "player_name": "Christian Kofane",
                  "ranking": 3253
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.753,
          "history_matches": 31,
          "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": 31,
            "data_confidence": 0.753,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.97,
            "bench_appearance_prob": 0.739,
            "market_value_adjustment": 1.0075,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 13.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.02
            },
            "rationale": "Bench projection scaled from XGBoost F_service (31 historical appearances) to 19.0 expected mins (appearance prob 0.74); FBref playing time empirical prior: 2.0 sub appearances, 13.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0611,
                "goals": 0.0899,
                "goal_rate": 0.0899,
                "shots_on_target": 0.3067,
                "total_shots": 0.8458,
                "expected_assists": 0.0352,
                "key_pass": 0.3746,
                "rating": 6.6419,
                "minutes": 20.88,
                "total_pass": 7.6843,
                "accurate_pass": 5.7763,
                "duels_won": 1.9357,
                "total_long_balls": 0.6221,
                "accurate_long_balls": 0.3075,
                "total_opp_half_passes": 5.5966,
                "accurate_opp_half_passes": 4.0775,
                "crosses_total": 0.9612,
                "crosses_accurate": 0.1193,
                "touches": 14.7713,
                "possession_lost": 5.0884,
                "dispossessed": 0.4448,
                "duels_lost": 2.5343,
                "aerial_lost": 0.2888,
                "total_contest": 1.5872,
                "won_contest": 0.6897,
                "ball_recovery": 1.1084,
                "challenges_lost": 0.4112,
                "fouls": 0.492,
                "fouls_drawn": 0.4431,
                "assists": 0.022,
                "assist_rate": 0.022,
                "interceptions": 0.1741,
                "tackles_won": 0.3446,
                "tackles": 0.761,
                "clearances": 0.1618,
                "blocks": 0.0,
                "big_chances_created": 0.0159,
                "big_chances_missed": 0.0,
                "xgot": 0.1176,
                "offsides": 0.0871,
                "ball_carries": 4.3839,
                "total_progression": 31.8028,
                "progressive_carries": 1.0441,
                "shots_off_target": 0.5391
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.151,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1283,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.1091,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0927,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0788,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.067,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0569,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0484,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Sunderland",
                    "minutes": 44.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-11",
                    "opponent": "Manchester City",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.035,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0502,
                  "totalOppositionHalfPasses": 6.5611,
                  "accurateOppositionHalfPasses": 4.8685,
                  "accuratePass": 6.7597,
                  "totalShots": 0.8291
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06113840639591217,
                    "model_output": 0.0611,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0904
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.019
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0037
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0137,
                      "total": 0.0611,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.609991
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.193885
                        },
                        {
                          "name": "goals",
                          "margin": -0.087827
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.046305
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.033535
                        }
                      ],
                      "others_margin": -0.203138
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08987140655517578,
                    "model_output": 0.0899,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0829
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0106
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0057
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.004
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": 0.0027
                        }
                      ],
                      "others": -0.0119,
                      "total": 0.0899,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.52753
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.092611
                        },
                        {
                          "name": "goals",
                          "margin": -0.05351
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.039569
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": 0.026747
                        }
                      ],
                      "others_margin": -0.124919
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.30666032433509827,
                    "model_output": 0.3067,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1969
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0337
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0138
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0137
                        },
                        {
                          "name": "goals",
                          "contribution": -0.013
                        }
                      ],
                      "others": 0.0142,
                      "total": 0.3067,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.457549
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.104474
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.046342
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.045758
                        },
                        {
                          "name": "goals",
                          "margin": -0.043367
                        }
                      ],
                      "others_margin": 0.047223
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8457579016685486,
                    "model_output": 0.8458,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4671
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1374
                        },
                        {
                          "name": "goals",
                          "contribution": -0.046
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0422
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0398
                        }
                      ],
                      "others": 0.0336,
                      "total": 0.8458,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.467097
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.137369
                        },
                        {
                          "name": "goals",
                          "margin": -0.04599
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.04224
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.039839
                        }
                      ],
                      "others_margin": 0.033385
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03517727926373482,
                    "model_output": 0.0352,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0194
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0054
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0039
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0028
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0022
                        }
                      ],
                      "others": 0.0001,
                      "total": 0.0352,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.35813
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.127006
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.10367
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.080217
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.063632
                        }
                      ],
                      "others_margin": 1e-06
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3746051788330078,
                    "model_output": 0.3746,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.245
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0295
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0213
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0172
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.0127,
                      "total": 0.3746,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.446336
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.070107
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.053783
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.04386
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.036947
                        }
                      ],
                      "others_margin": -0.033584
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.641922473907471,
                    "model_output": 6.6419,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0612
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.012
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0106
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.01
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0097
                        }
                      ],
                      "others": -0.0663,
                      "total": 6.6419,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.06121
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.01203
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010645
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.010025
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.009696
                        }
                      ],
                      "others_margin": -0.066203
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 31,
                  "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.0075, quality 0.686)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0905,
                "goal_rate": 0.0905,
                "shots_on_target": 0.309,
                "total_shots": 0.8521,
                "expected_assists": 0.0354,
                "key_pass": 0.3774,
                "rating": 6.6419,
                "minutes": 20.88,
                "total_pass": 7.7419,
                "accurate_pass": 5.8196,
                "duels_won": 1.9502,
                "total_long_balls": 0.6268,
                "accurate_long_balls": 0.3098,
                "total_opp_half_passes": 5.6386,
                "accurate_opp_half_passes": 4.1081,
                "crosses_total": 0.9684,
                "crosses_accurate": 0.1202,
                "touches": 14.8821,
                "possession_lost": 5.1266,
                "dispossessed": 0.4481,
                "duels_lost": 2.5533,
                "aerial_lost": 0.291,
                "total_contest": 1.5991,
                "won_contest": 0.6949,
                "ball_recovery": 1.1167,
                "challenges_lost": 0.4143,
                "fouls": 0.4957,
                "fouls_drawn": 0.4464,
                "assists": 0.0222,
                "assist_rate": 0.0222,
                "interceptions": 0.1754,
                "tackles_won": 0.3472,
                "tackles": 0.7667,
                "clearances": 0.163,
                "blocks": 0.0,
                "big_chances_created": 0.016,
                "big_chances_missed": 0.0,
                "xgot": 0.1185,
                "offsides": 0.0878,
                "ball_carries": 4.4168,
                "total_progression": 32.0413,
                "progressive_carries": 1.0519,
                "shots_off_target": 0.5431
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0075,
                "reference_quality": 0.505,
                "history_matches": 31,
                "history_shrink": 0.1389,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0018)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0903,
                "goal_rate": 0.0903,
                "shots_on_target": 0.3084,
                "total_shots": 0.8506,
                "expected_assists": 0.0354,
                "key_pass": 0.3774,
                "rating": 6.6419,
                "minutes": 20.88,
                "total_pass": 7.7419,
                "accurate_pass": 5.8196,
                "duels_won": 1.9502,
                "total_long_balls": 0.6268,
                "accurate_long_balls": 0.3098,
                "total_opp_half_passes": 5.6386,
                "accurate_opp_half_passes": 4.1081,
                "crosses_total": 0.9694,
                "crosses_accurate": 0.1202,
                "touches": 14.8821,
                "possession_lost": 5.1266,
                "dispossessed": 0.4481,
                "duels_lost": 2.5533,
                "aerial_lost": 0.291,
                "total_contest": 1.5991,
                "won_contest": 0.6949,
                "ball_recovery": 1.1167,
                "challenges_lost": 0.4143,
                "fouls": 0.499,
                "fouls_drawn": 0.4456,
                "assists": 0.0222,
                "assist_rate": 0.0222,
                "interceptions": 0.1751,
                "tackles_won": 0.3466,
                "tackles": 0.7667,
                "clearances": 0.163,
                "blocks": 0.0,
                "big_chances_created": 0.016,
                "big_chances_missed": 0.0,
                "xgot": 0.1185,
                "offsides": 0.0876,
                "ball_carries": 4.4168,
                "total_progression": 32.0413,
                "progressive_carries": 1.0519,
                "shots_off_target": 0.5431
              },
              "params": {
                "blend_weight": 0.0018,
                "history_matches": 31,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.232,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 20.9 to 19.0 expected minutes (appearance prob 0.74)",
              "stats": {
                "expected_goals": 0.056,
                "goals": 0.082,
                "goal_rate": 0.082,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0322,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assists": 0.0202,
                "assist_rate": 0.0202,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.1077,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97
              },
              "params": {
                "expected_minutes": 18.97,
                "projection_minutes": 20.88,
                "minutes_scale": 0.9085,
                "appearance_probability": 0.739
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.056,
                "goals": 0.082,
                "goal_rate": 0.082,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0322,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assists": 0.0202,
                "assist_rate": 0.0202,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.1077,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.056,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0322,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.1077,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.2453,
                "creation_factor": 0.854
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 0.739
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.056,
                  "after": 0.0391
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0322,
                  "after": 0.0225
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.2453,
                "creation_factor": 0.854,
                "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": 3248,
                "fifa_rank": 1766.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.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0381,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2453,
                "creation_factor": 0.854,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0381,
                "goal_rate": 0.082,
                "scorer_weight": 0.0487,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0356,
                "finishing_factor": 1.2453,
                "appearance_weight": 0.739,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.0391,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2802,
                "total_shots": 0.7736,
                "expected_assists": 0.0225,
                "key_pass": 0.3429,
                "rating": 6.6419,
                "minutes": 18.97,
                "total_pass": 7.0337,
                "accurate_pass": 5.2873,
                "duels_won": 1.7718,
                "total_long_balls": 0.5695,
                "accurate_long_balls": 0.2815,
                "total_opp_half_passes": 5.1228,
                "accurate_opp_half_passes": 3.7323,
                "crosses_total": 0.8807,
                "crosses_accurate": 0.1092,
                "touches": 13.5208,
                "possession_lost": 4.6576,
                "dispossessed": 0.4481,
                "duels_lost": 2.3197,
                "aerial_lost": 0.291,
                "total_contest": 1.4528,
                "won_contest": 0.6313,
                "ball_recovery": 1.0145,
                "challenges_lost": 0.4143,
                "fouls": 0.4534,
                "fouls_drawn": 0.4048,
                "assist_rate": 0.0202,
                "assists": 0,
                "interceptions": 0.1591,
                "tackles_won": 0.3149,
                "tackles": 0.6966,
                "clearances": 0.1481,
                "blocks": 0.0,
                "big_chances_created": 0.0145,
                "big_chances_missed": 0.0,
                "xgot": 0.0752,
                "offsides": 0.0876,
                "ball_carries": 4.0128,
                "total_progression": 29.1103,
                "progressive_carries": 0.9557,
                "shots_off_target": 0.4934,
                "bench_appearance_probability": 0.739,
                "bench_expected_minutes": 18.97,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0381,
                "projected_assists": 0,
                "assist_probability": 0.0222,
                "finishing_factor": 1.2453,
                "creation_factor": 0.854,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0222,
                "assist_rate": 0.0202,
                "provider_weight": 0.0192,
                "squad_weight_total": 0.758,
                "weight_share": 0.0254,
                "creation_factor": 0.854,
                "appearance_weight": 0.739,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Rodrigo Muniz": {
          "player_id": 1015256,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 184,
          "market_value": 22000000,
          "stats": {
            "expected_goals": 0.0703,
            "goal_rate": 0.1426,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0047,
            "key_pass": 0,
            "rating": 6.6066,
            "minutes": 17,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 3,
            "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.3505,
            "dispossessed": 0.2076,
            "duels_lost": 2,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0164,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 0,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.736,
            "bench_expected_minutes": 16.71,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.067,
            "projected_assists": 0,
            "assist_probability": 0.0047,
            "finishing_factor": 1.25,
            "creation_factor": 0.8818,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 14,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "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"
            },
            {
              "match_id": 16363652,
              "match_date": "2026-09-20",
              "home_team": "Fulham",
              "away_team": "Manchester United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "clearances": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 12,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.382,
                "expected_assists": 0.0001,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 2,
                "accurate_pass": 1,
                "key_pass": 1,
                "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": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363244,
              "match_date": "2026-08-24",
              "home_team": "Fulham",
              "away_team": "Chelsea",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Chelsea",
              "stats": {
                "minutes": 8,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0016,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "key_pass": 1,
                "clearances": 1,
                "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"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 72,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1592,
                "expected_assists": 0.0083,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 4,
                "tackles": 1,
                "aerial_won": 6,
                "duels_won": 10,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 67,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1511,
                "expected_assists": 0.0058,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 6,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7094,
                "expected_assists": 0.0005,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 10,
                "accurate_pass": 3,
                "aerial_won": 7,
                "duels_won": 10
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 17,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 3,
                "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": 14024004,
              "match_date": "2026-04-25",
              "home_team": "Fulham",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 24,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.114,
                "expected_assists": 0.0082,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 6,
                "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": 3299,
            "combined_rank_score": 1249.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1800.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6066,
            "source_file": "data/player_rankings.csv",
            "player_name": "Rodrigo Muniz",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Raíllo",
                  "ranking": 3300
                },
                {
                  "player_name": "Gelson Martins",
                  "ranking": 3301
                },
                {
                  "player_name": "Abel Bretones",
                  "ranking": 3302
                },
                {
                  "player_name": "Chiquinho",
                  "ranking": 3303
                },
                {
                  "player_name": "Kaiki",
                  "ranking": 3304
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.751,
          "history_matches": 26,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 26,
            "data_confidence": 0.751,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 16.71,
            "bench_appearance_prob": 0.736,
            "market_value_adjustment": 1.007,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 9.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0067
            },
            "rationale": "Bench projection scaled from XGBoost F_service (26 historical appearances) to 16.7 expected mins (appearance prob 0.74); FBref playing time empirical prior: 1.0 sub appearances, 9.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0991,
                "goals": 0.14,
                "goal_rate": 0.14,
                "shots_on_target": 0.2879,
                "total_shots": 0.8229,
                "expected_assists": 0.0066,
                "key_pass": 0.2096,
                "rating": 6.6066,
                "minutes": 16.51,
                "total_pass": 3.0958,
                "accurate_pass": 1.5125,
                "duels_won": 2.9588,
                "total_long_balls": 0.0798,
                "accurate_long_balls": 0.0319,
                "total_opp_half_passes": 2.3736,
                "accurate_opp_half_passes": 1.0798,
                "crosses_total": 0.0519,
                "crosses_accurate": 0.0,
                "touches": 7.5039,
                "possession_lost": 3.2874,
                "dispossessed": 0.2062,
                "duels_lost": 2.1839,
                "aerial_lost": 1.5933,
                "total_contest": 0.1684,
                "won_contest": 0.0519,
                "ball_recovery": 0.1368,
                "challenges_lost": 0.0611,
                "fouls": 0.2068,
                "fouls_drawn": 0.3258,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.133,
                "tackles": 0.2212,
                "clearances": 0.5817,
                "blocks": 0.0638,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.023,
                "offsides": 0.0611,
                "ball_carries": 1.0872,
                "total_progression": 0.0,
                "progressive_carries": 0.0336,
                "shots_off_target": 0.535
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.1522,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Manchester United",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1294,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.11,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0935,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Chelsea",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0795,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0675,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Arsenal",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0415,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Aston Villa",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.0353,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1235,
                  "totalOppositionHalfPasses": 3.761,
                  "accurateOppositionHalfPasses": 1.5402,
                  "accuratePass": 2.2262,
                  "totalShots": 1.0027
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09914231300354004,
                    "model_output": 0.0991,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0903
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0081
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0074
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0068
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0031
                        }
                      ],
                      "others": 0.0033,
                      "total": 0.0991,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.609251
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.07779
                        },
                        {
                          "name": "goals",
                          "margin": -0.076751
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.071032
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": -0.03143
                        }
                      ],
                      "others_margin": 0.032926
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.13998064398765564,
                    "model_output": 0.14,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0671
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0246
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0185
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0073
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0049
                        }
                      ],
                      "others": 0.0109,
                      "total": 0.14,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.402981
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.167187
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.122978
                        },
                        {
                          "name": "goals",
                          "margin": -0.052829
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.03758
                        }
                      ],
                      "others_margin": 0.080912
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.28788578510284424,
                    "model_output": 0.2879,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2219
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0188
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0154
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0139
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0134
                        }
                      ],
                      "others": -0.0225,
                      "total": 0.2879,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.534233
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.061651
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.050964
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.045837
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.044113
                        }
                      ],
                      "others_margin": -0.075285
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.8228614926338196,
                    "model_output": 0.8229,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.6009
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0859
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0666
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0367
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0331
                        }
                      ],
                      "others": 0.0202,
                      "total": 0.8229,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.600855
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.08592
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.066642
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.036651
                        },
                        {
                          "name": "goals",
                          "margin": -0.03309
                        }
                      ],
                      "others_margin": 0.020127
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.006602001376450062,
                    "model_output": 0.0066,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0245
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0112
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0068
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0034
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0102,
                      "total": 0.0066,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.478149
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.329423
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.271482
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.17068
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.097531
                        }
                      ],
                      "others_margin": -0.931155
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.20955617725849152,
                    "model_output": 0.2096,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2686
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0373
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0313
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0273
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0132
                        }
                      ],
                      "others": -0.0932,
                      "total": 0.2096,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.502158
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.095054
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.087408
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.083011
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.042789
                        }
                      ],
                      "others_margin": -0.367357
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.606597900390625,
                    "model_output": 6.6066,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0497
                        },
                        {
                          "name": "rating",
                          "contribution": -0.024
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.012
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0119
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0534,
                      "total": 6.6066,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.049721
                        },
                        {
                          "name": "rating",
                          "margin": -0.024029
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.012017
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011917
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010685
                        }
                      ],
                      "others_margin": -0.053313
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 26,
                  "role_matches": 16,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0070, quality 0.650)",
              "stats": {
                "expected_goals": 0.0998,
                "goals": 0.141,
                "goal_rate": 0.141,
                "shots_on_target": 0.2899,
                "total_shots": 0.8286,
                "expected_assists": 0.0066,
                "key_pass": 0.211,
                "rating": 6.6066,
                "minutes": 16.51,
                "total_pass": 3.1175,
                "accurate_pass": 1.5231,
                "duels_won": 2.9795,
                "total_long_balls": 0.0804,
                "accurate_long_balls": 0.0321,
                "total_opp_half_passes": 2.3902,
                "accurate_opp_half_passes": 1.0874,
                "crosses_total": 0.0523,
                "crosses_accurate": 0.0,
                "touches": 7.5564,
                "possession_lost": 3.3104,
                "dispossessed": 0.2076,
                "duels_lost": 2.1992,
                "aerial_lost": 1.6045,
                "total_contest": 0.1696,
                "won_contest": 0.0523,
                "ball_recovery": 0.1378,
                "challenges_lost": 0.0615,
                "fouls": 0.2082,
                "fouls_drawn": 0.3281,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1339,
                "tackles": 0.2227,
                "clearances": 0.5858,
                "blocks": 0.0642,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0232,
                "offsides": 0.0615,
                "ball_carries": 1.0948,
                "total_progression": 0.0,
                "progressive_carries": 0.0338,
                "shots_off_target": 0.5387
              },
              "params": {
                "market_value_eur": 22000000,
                "quality_factor": 0.6503,
                "boost_factor": 1.007,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0007)",
              "stats": {
                "expected_goals": 0.0998,
                "goals": 0.1409,
                "goal_rate": 0.1409,
                "shots_on_target": 0.291,
                "total_shots": 0.8293,
                "expected_assists": 0.0066,
                "key_pass": 0.211,
                "rating": 6.6066,
                "minutes": 16.51,
                "total_pass": 3.1175,
                "accurate_pass": 1.5231,
                "duels_won": 2.9795,
                "total_long_balls": 0.0804,
                "accurate_long_balls": 0.0321,
                "total_opp_half_passes": 2.3902,
                "accurate_opp_half_passes": 1.0874,
                "crosses_total": 0.0523,
                "crosses_accurate": 0.0,
                "touches": 7.5564,
                "possession_lost": 3.3104,
                "dispossessed": 0.2076,
                "duels_lost": 2.1992,
                "aerial_lost": 1.6045,
                "total_contest": 0.1696,
                "won_contest": 0.0523,
                "ball_recovery": 0.1378,
                "challenges_lost": 0.0615,
                "fouls": 0.2081,
                "fouls_drawn": 0.3279,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1338,
                "tackles": 0.2227,
                "clearances": 0.5858,
                "blocks": 0.0642,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0232,
                "offsides": 0.0615,
                "ball_carries": 1.0948,
                "total_progression": 0.0,
                "progressive_carries": 0.0338,
                "shots_off_target": 0.5387
              },
              "params": {
                "blend_weight": 0.0007,
                "history_matches": 26,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1834,
                "prior_reliability": 0.0067,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.5 to 16.7 expected minutes (appearance prob 0.74)",
              "stats": {
                "expected_goals": 0.101,
                "goals": 0.1426,
                "goal_rate": 0.1426,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0067,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71
              },
              "params": {
                "expected_minutes": 16.71,
                "projection_minutes": 16.51,
                "minutes_scale": 1.0121,
                "appearance_probability": 0.736
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.101,
                "goals": 0.1426,
                "goal_rate": 0.1426,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0067,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.101,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0067,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0235,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 0.736
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.101,
                  "after": 0.0703
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818,
                "fifa_overall": 76.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": 3299,
                "fifa_rank": 1800.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.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.067,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.067,
                "goal_rate": 0.1426,
                "scorer_weight": 0.0879,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0643,
                "finishing_factor": 1.25,
                "appearance_weight": 0.736,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.0703,
                "goal_rate": 0.1426,
                "goals": 0,
                "shots_on_target": 0.2945,
                "total_shots": 0.8398,
                "expected_assists": 0.0047,
                "key_pass": 0.2136,
                "rating": 6.6066,
                "minutes": 16.71,
                "total_pass": 3.1553,
                "accurate_pass": 1.5416,
                "duels_won": 3.0156,
                "total_long_balls": 0.0814,
                "accurate_long_balls": 0.0325,
                "total_opp_half_passes": 2.4192,
                "accurate_opp_half_passes": 1.1006,
                "crosses_total": 0.0529,
                "crosses_accurate": 0.0,
                "touches": 7.6479,
                "possession_lost": 3.3505,
                "dispossessed": 0.2076,
                "duels_lost": 2.2258,
                "aerial_lost": 1.6045,
                "total_contest": 0.1717,
                "won_contest": 0.0529,
                "ball_recovery": 0.1395,
                "challenges_lost": 0.0615,
                "fouls": 0.2106,
                "fouls_drawn": 0.3319,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.1354,
                "tackles": 0.2254,
                "clearances": 0.5929,
                "blocks": 0.065,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0164,
                "offsides": 0.0615,
                "ball_carries": 1.1081,
                "total_progression": 0.0,
                "progressive_carries": 0.0342,
                "shots_off_target": 0.5452,
                "bench_appearance_probability": 0.736,
                "bench_expected_minutes": 16.71,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.067,
                "projected_assists": 0,
                "assist_probability": 0.0047,
                "finishing_factor": 1.25,
                "creation_factor": 0.8818,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0047,
                "assist_rate": 0.0,
                "provider_weight": 0.0041,
                "squad_weight_total": 0.758,
                "weight_share": 0.0055,
                "creation_factor": 0.8818,
                "appearance_weight": 0.736,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Emile Smith Rowe": {
          "player_id": 867445,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 32,
          "height": 182,
          "market_value": 18300000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0172,
            "assist_rate": 0.0394,
            "assists": 0,
            "expected_goals": 0.0274,
            "goal_rate": 0.0429,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.6874,
            "minutes": 18,
            "total_pass": 11,
            "accurate_pass": 10,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 2.3365,
            "dispossessed": 0.544,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0172,
            "ball_carries": 3,
            "total_progression": 4,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.706,
            "bench_expected_minutes": 18.45,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 3.348,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0269,
            "projected_assists": 0,
            "assist_probability": 0.017,
            "finishing_factor": 1.0198,
            "creation_factor": 1.1794,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363877,
              "match_date": "2026-10-10",
              "home_team": "Ipswich Town",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Ipswich Town",
              "stats": {
                "minutes": 10,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "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": 16363264,
              "match_date": "2026-09-12",
              "home_team": "Liverpool FC",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "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": 16363269,
              "match_date": "2026-09-05",
              "home_team": "Fulham",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 11,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 6,
                "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"
            },
            {
              "match_id": 16363255,
              "match_date": "2026-08-30",
              "home_team": "Sunderland",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Fulham",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0581,
                "expected_assists": 0.0242,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 16,
                "key_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14023965,
              "match_date": "2026-05-24",
              "home_team": "Fulham",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 72,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0598,
                "expected_assists": 0.0025,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 19,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 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": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Wolverhampton",
              "stats": {
                "minutes": 79,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0435,
                "expected_assists": 0.0232,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 47,
                "accurate_pass": 40,
                "tackles": 2,
                "tackles_won": 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": 14023948,
              "match_date": "2026-05-09",
              "home_team": "Fulham",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0887,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "total_pass": 15,
                "accurate_pass": 14,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023931,
              "match_date": "2026-05-02",
              "home_team": "Arsenal",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 78,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0557,
                "expected_assists": 0.0204,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 35,
                "accurate_pass": 34,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14024004,
              "match_date": "2026-04-25",
              "home_team": "Fulham",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 76,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0377,
                "expected_assists": 0.0174,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 19,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025031,
              "match_date": "2026-04-18",
              "home_team": "Brentford",
              "away_team": "Fulham",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Fulham",
              "opponent": "Brentford",
              "stats": {
                "minutes": 67,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0422,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 32,
                "key_pass": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3121,
            "combined_rank_score": 1081.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 744.0,
            "sofascore_rating": 6.6676,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1419.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6874,
            "source_file": "data/player_rankings.csv",
            "player_name": "Emile Smith Rowe",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Youri Baas",
                  "ranking": 3116
                },
                {
                  "player_name": "Martín Satriano",
                  "ranking": 3117
                },
                {
                  "player_name": "Marcos Leonardo",
                  "ranking": 3118
                },
                {
                  "player_name": "Chidera Ejuke",
                  "ranking": 3119
                },
                {
                  "player_name": "Adrián Martínez",
                  "ranking": 3120
                }
              ],
              "lower": [
                {
                  "player_name": "Santiago Giménez",
                  "ranking": 3122
                },
                {
                  "player_name": "Mykola Shaparenko",
                  "ranking": 3123
                },
                {
                  "player_name": "Kostas Tsimikas",
                  "ranking": 3124
                },
                {
                  "player_name": "Kepa",
                  "ranking": 3125
                },
                {
                  "player_name": "Nahuel Molina",
                  "ranking": 3126
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 18.45,
            "bench_appearance_prob": 0.706,
            "market_value_adjustment": 1.0036,
            "fbref_prior_metrics": {
              "squad": "Fulham",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 15.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (41 historical appearances) to 18.4 expected mins (appearance prob 0.71); FBref playing time empirical prior: 1.0 sub appearances, 15.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3455,
                "expected_assists": 0.0247,
                "assists": 0.0377,
                "assist_rate": 0.0377,
                "expected_goals": 0.0393,
                "goals": 0.0411,
                "goal_rate": 0.0411,
                "shots_on_target": 0.1603,
                "total_shots": 0.4591,
                "rating": 6.6874,
                "minutes": 17.72,
                "total_pass": 10.1265,
                "accurate_pass": 9.1141,
                "duels_won": 0.5431,
                "total_long_balls": 0.2457,
                "accurate_long_balls": 0.1121,
                "total_own_half_passes": 3.0325,
                "accurate_own_half_passes": 2.7704,
                "total_opp_half_passes": 7.0939,
                "accurate_opp_half_passes": 6.3436,
                "crosses_total": 0.0572,
                "crosses_accurate": 0.0,
                "touches": 13.661,
                "possession_lost": 2.2361,
                "dispossessed": 0.542,
                "duels_lost": 1.3781,
                "aerial_won": 0.0,
                "aerial_lost": 0.3917,
                "interceptions": 0.2156,
                "tackles_won": 0.2332,
                "tackles": 0.3314,
                "clearances": 0.082,
                "total_contest": 0.3483,
                "won_contest": 0.153,
                "challenges_lost": 0.082,
                "fouls": 0.1671,
                "fouls_drawn": 0.0588,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0839,
                "xgot": 0.0247,
                "ball_carries": 3.1386,
                "total_progression": 3.5974,
                "progressive_carries": 0.197,
                "shots_off_target": 0.2988
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Ipswich Town",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Liverpool FC",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Crystal Palace",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Sunderland",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Newcastle United",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Wolverhampton",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Bournemouth",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Arsenal",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Aston Villa",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-18",
                    "opponent": "Brentford",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.153,
                  "totalShots": 0.643,
                  "expectedGoals": 0.0553,
                  "expectedAssists": 0.0148,
                  "onTargetScoringAttempt": 0.2053
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.34547924995422363,
                    "model_output": 0.3455,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3949
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0657
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0391
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0356
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0163
                        }
                      ],
                      "others": 0.0026,
                      "total": 0.3455,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.582504
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.141057
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.094549
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.094424
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.046359
                        }
                      ],
                      "others_margin": 0.007577
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.024688242003321648,
                    "model_output": 0.0247,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0366
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0084
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0065
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0034
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0039,
                      "total": 0.0247,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.555754
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.186481
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.172052
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.105341
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.0806
                        }
                      ],
                      "others_margin": -0.146482
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03769367188215256,
                    "model_output": 0.0377,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0257
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0108
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0076
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0029
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.0377,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.348156
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.191908
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.160842
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.158482
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.0765
                        }
                      ],
                      "others_margin": -0.058111
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0393194742500782,
                    "model_output": 0.0393,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0442
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0054
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0046
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0033
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.0393,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.63644
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.103657
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.087644
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.068
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.036341
                        }
                      ],
                      "others_margin": -0.146347
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.041055310517549515,
                    "model_output": 0.0411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0437
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0063
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0037
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0023
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0015
                        }
                      ],
                      "others": -0.0053,
                      "total": 0.0411,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.579881
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.120628
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.077936
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.050043
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.030879
                        }
                      ],
                      "others_margin": -0.124108
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.16029050946235657,
                    "model_output": 0.1603,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1448
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0295
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0163
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0117
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0045
                        }
                      ],
                      "others": -0.0149,
                      "total": 0.1603,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.587157
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.17772
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.101985
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.067551
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.025594
                        }
                      ],
                      "others_margin": -0.089059
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.45911508798599243,
                    "model_output": 0.4591,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3958
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1766
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.057
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.023
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0219
                        }
                      ],
                      "others": -0.0213,
                      "total": 0.4591,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.395789
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.176587
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057028
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.022971
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.021937
                        }
                      ],
                      "others_margin": -0.021401
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.68735408782959,
                    "model_output": 6.6874,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0693
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0377
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.027
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0085
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.008
                        }
                      ],
                      "others": -0.0182,
                      "total": 6.6874,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.069335
                        },
                        {
                          "name": "rating",
                          "margin": -0.037745
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.027015
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.008497
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.007983
                        }
                      ],
                      "others_margin": -0.018123
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 41,
                  "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.0036, quality 0.614)",
              "stats": {
                "key_pass": 0.3467,
                "expected_assists": 0.0248,
                "assists": 0.0378,
                "assist_rate": 0.0378,
                "expected_goals": 0.0395,
                "goals": 0.0412,
                "goal_rate": 0.0412,
                "shots_on_target": 0.1609,
                "total_shots": 0.4608,
                "rating": 6.6874,
                "minutes": 17.72,
                "total_pass": 10.163,
                "accurate_pass": 9.1469,
                "duels_won": 0.5451,
                "total_long_balls": 0.2466,
                "accurate_long_balls": 0.1125,
                "total_own_half_passes": 3.0434,
                "accurate_own_half_passes": 2.7804,
                "total_opp_half_passes": 7.1194,
                "accurate_opp_half_passes": 6.3664,
                "crosses_total": 0.0574,
                "crosses_accurate": 0.0,
                "touches": 13.7102,
                "possession_lost": 2.2441,
                "dispossessed": 0.544,
                "duels_lost": 1.3831,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2164,
                "tackles_won": 0.234,
                "tackles": 0.3326,
                "clearances": 0.0823,
                "total_contest": 0.3496,
                "won_contest": 0.1536,
                "challenges_lost": 0.0823,
                "fouls": 0.1677,
                "fouls_drawn": 0.059,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0842,
                "xgot": 0.0248,
                "ball_carries": 3.1499,
                "total_progression": 3.6104,
                "progressive_carries": 0.1977,
                "shots_off_target": 0.2999
              },
              "params": {
                "market_value_eur": 18300000,
                "quality_factor": 0.614,
                "boost_factor": 1.0036,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0009)",
              "stats": {
                "key_pass": 0.3467,
                "expected_assists": 0.0248,
                "assists": 0.0378,
                "assist_rate": 0.0378,
                "expected_goals": 0.0395,
                "goals": 0.0412,
                "goal_rate": 0.0412,
                "shots_on_target": 0.1607,
                "total_shots": 0.4615,
                "rating": 6.6874,
                "minutes": 17.72,
                "total_pass": 10.163,
                "accurate_pass": 9.1469,
                "duels_won": 0.5451,
                "total_long_balls": 0.2466,
                "accurate_long_balls": 0.1125,
                "total_own_half_passes": 3.0434,
                "accurate_own_half_passes": 2.7804,
                "total_opp_half_passes": 7.1194,
                "accurate_opp_half_passes": 6.3664,
                "crosses_total": 0.0573,
                "crosses_accurate": 0.0,
                "touches": 13.7102,
                "possession_lost": 2.2441,
                "dispossessed": 0.544,
                "duels_lost": 1.3831,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2162,
                "tackles_won": 0.2338,
                "tackles": 0.3326,
                "clearances": 0.0823,
                "total_contest": 0.3496,
                "won_contest": 0.1536,
                "challenges_lost": 0.0823,
                "fouls": 0.1675,
                "fouls_drawn": 0.0589,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0842,
                "xgot": 0.0248,
                "ball_carries": 3.1499,
                "total_progression": 3.6104,
                "progressive_carries": 0.1977,
                "shots_off_target": 0.2999
              },
              "params": {
                "blend_weight": 0.0009,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1969,
                "prior_reliability": 0.0133,
                "competition": "Premier League",
                "squad": "Fulham"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 17.7 to 18.4 expected minutes (appearance prob 0.71)",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0258,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0411,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0258,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45
              },
              "params": {
                "expected_minutes": 18.45,
                "projection_minutes": 17.72,
                "minutes_scale": 1.0412,
                "appearance_probability": 0.706
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0258,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0411,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0258,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0258,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0411,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0258,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 1.3718, xG scale 0.9454, xA scale 0.9454, team xA 0.89 = 0.69 x lambda)",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.0198,
                "creation_factor": 1.1794
              },
              "params": {
                "team_lambda": 1.297,
                "squad_xg_sum": 1.3718,
                "squad_xa_sum": 0.9435,
                "team_expected_assists": 0.8921,
                "team_xa_to_xg_ratio": 0.6878,
                "bench_appearance_weighted": true,
                "xg_scale": 0.9454,
                "xa_scale": 0.9454,
                "opponent_lambda": 1.201,
                "scoreline_reset": true,
                "appearance_weight": 0.706
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0411,
                  "after": 0.0274
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0258,
                  "after": 0.0172
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 0.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "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.0198,
                "creation_factor": 1.1794,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3121,
                "fifa_rank": 1419.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.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0269,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0198,
                "creation_factor": 1.1794,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0269,
                "goal_rate": 0.0429,
                "scorer_weight": 0.0279,
                "squad_weight_total": 1.3663,
                "weight_share": 0.0205,
                "finishing_factor": 1.0198,
                "appearance_weight": 0.706,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Gonzalo García",
                    "weight": 0.312,
                    "already": 0,
                    "effective_weight": 0.312,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.2158
                  }
                ]
              }
            },
            {
              "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.361,
                "expected_assists": 0.0172,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0274,
                "goal_rate": 0.0429,
                "goals": 0,
                "shots_on_target": 0.1673,
                "total_shots": 0.4805,
                "rating": 6.6874,
                "minutes": 18.45,
                "total_pass": 10.5817,
                "accurate_pass": 9.5237,
                "duels_won": 0.5676,
                "total_long_balls": 0.2568,
                "accurate_long_balls": 0.1171,
                "total_own_half_passes": 3.1688,
                "accurate_own_half_passes": 2.8949,
                "total_opp_half_passes": 7.4127,
                "accurate_opp_half_passes": 6.6287,
                "crosses_total": 0.0597,
                "crosses_accurate": 0.0,
                "touches": 14.275,
                "possession_lost": 2.3365,
                "dispossessed": 0.544,
                "duels_lost": 1.4401,
                "aerial_won": 0.0,
                "aerial_lost": 0.3931,
                "interceptions": 0.2251,
                "tackles_won": 0.2434,
                "tackles": 0.3463,
                "clearances": 0.0857,
                "total_contest": 0.364,
                "won_contest": 0.1599,
                "challenges_lost": 0.0823,
                "fouls": 0.1744,
                "fouls_drawn": 0.0613,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0877,
                "xgot": 0.0172,
                "ball_carries": 3.2797,
                "total_progression": 3.7591,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.3123,
                "bench_appearance_probability": 0.706,
                "bench_expected_minutes": 18.45,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 3.348,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0269,
                "projected_assists": 0,
                "assist_probability": 0.017,
                "finishing_factor": 1.0198,
                "creation_factor": 1.1794,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.017,
                "assist_rate": 0.0394,
                "provider_weight": 0.0203,
                "squad_weight_total": 0.758,
                "weight_share": 0.0268,
                "creation_factor": 1.1794,
                "appearance_weight": 0.706,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alex Iwobi",
                    "weight": 0.1675,
                    "already": 0,
                    "effective_weight": 0.1675,
                    "runner_up": "Josh King",
                    "runner_up_effective_weight": 0.1066,
                    "blocked_own_goal": [
                      "Gonzalo García"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.3,
        "expected_assists": 0.89,
        "total_shots": 16,
        "shots_on_target": 4,
        "total_passes": 535,
        "interceptions": 8,
        "tackles": 15,
        "avg_rating": 6.97,
        "possession_estimated_pct": 51.5,
        "pressing_actions_per_90": 7.5
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Jack Rudoni",
        "attacker_role": "LW",
        "attacker_market_value": 21000000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.641,
        "defenders": [
          "David Affengruber"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.612,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.46,
        "xg_contribution": 0.1918,
        "xg_multiplier": 0.971,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 4,
        "dribbles_successful": 1.6,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "David Affengruber",
            "role": "RB",
            "market_value": 18100000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.6,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.54
          }
        ],
        "duel_analysis": "Jack Rudoni (LW) is evenly matched against David Affengruber in a direct 1v1 contest. Duel win probability: 46%.  Matchup xG multiplier ×0.97 (×1.00 = his usual level). Projected xG contribution: 0.192 — with neither side clearly dominant."
      },
      {
        "attacker": "Brandon Thomas-Asante",
        "attacker_role": "ST",
        "attacker_market_value": 16500000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.595,
        "defenders": [
          "Calvin Bassey",
          "Timothy Castagne"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.602,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1336,
        "xg_multiplier": 0.9352,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.6,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Calvin Bassey",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Timothy Castagne",
            "role": "CB",
            "market_value": 7600000,
            "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.82
          }
        ],
        "duel_analysis": "Brandon Thomas-Asante (ST) faces tough defensive resistance against Calvin Bassey and Timothy Castagne in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.94 (×1.00 = his usual level). Projected xG contribution: 0.134 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Taiwo Awoniyi",
        "attacker_role": "ST",
        "attacker_market_value": 7600000,
        "attacker_height": 183,
        "attacker_skill_quality": 0.494,
        "defenders": [
          "Calvin Bassey",
          "Timothy Castagne"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.602,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.2663,
        "xg_multiplier": 0.8857,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Calvin Bassey",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Timothy Castagne",
            "role": "CB",
            "market_value": 7600000,
            "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.82
          }
        ],
        "duel_analysis": "Taiwo Awoniyi (ST) faces tough defensive resistance against Calvin Bassey and Timothy Castagne in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.89 (×1.00 = his usual level). Projected xG contribution: 0.266 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Ephron Mason-Clark",
        "attacker_role": "ST",
        "attacker_market_value": 17200000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.603,
        "defenders": [
          "Calvin Bassey",
          "Timothy Castagne"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.602,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1769,
        "xg_multiplier": 0.9283,
        "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.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Calvin Bassey",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Timothy Castagne",
            "role": "CB",
            "market_value": 7600000,
            "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.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Ephron Mason-Clark (ST) faces tough defensive resistance against Calvin Bassey and Timothy Castagne in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.93 (×1.00 = his usual level). Projected xG contribution: 0.177 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Matt Grimes",
        "attacker_role": "CDM",
        "attacker_market_value": 5200000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.465,
        "defenders": [
          "Sander Berge"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.686,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.249,
        "xg_contribution": 0.0257,
        "xg_multiplier": 0.749,
        "shots_in_zone": 0.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Sander Berge",
            "role": "CDM",
            "market_value": 26000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.751
          }
        ],
        "duel_analysis": "Matt Grimes (CDM) is heavily outmatched defensively against Sander Berge in a direct 1v1 contest. Duel win probability: 25%. The quality gap is significant (€5M vs €26M avg). Matchup xG multiplier ×0.75 (×1.00 = his usual level). Projected xG contribution: 0.026 — with very limited chance creation expected."
      },
      {
        "attacker": "Caleb Yirenkyi",
        "attacker_role": "CDM",
        "attacker_market_value": 23000000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.66,
        "defenders": [
          "Sander Berge"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.686,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.356,
        "xg_contribution": 0.0344,
        "xg_multiplier": 0.9055,
        "shots_in_zone": 0.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Sander Berge",
            "role": "CDM",
            "market_value": 26000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.8,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.644
          }
        ],
        "duel_analysis": "Caleb Yirenkyi (CDM) faces tough defensive resistance against Sander Berge in a direct 1v1 contest. Duel win probability: 36%.  Matchup xG multiplier ×0.91 (×1.00 = his usual level). Projected xG contribution: 0.034 — and is restricted in space and time on the ball."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Alex Iwobi",
        "attacker_role": "LW",
        "attacker_market_value": 21000000,
        "attacker_height": 183,
        "attacker_skill_quality": 0.641,
        "defenders": [
          "Milan van Ewijk"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.66,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.468,
        "xg_contribution": 0.1571,
        "xg_multiplier": 0.9828,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 4,
        "dribbles_successful": 1.6,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Milan van Ewijk",
            "role": "RB",
            "market_value": 23000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.7,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.532
          }
        ],
        "duel_analysis": "Alex Iwobi (LW) is evenly matched against Milan van Ewijk in a direct 1v1 contest. Duel win probability: 47%.  Matchup xG multiplier ×0.98 (×1.00 = his usual level). Projected xG contribution: 0.157 — with neither side clearly dominant."
      },
      {
        "attacker": "Josh King",
        "attacker_role": "CAM",
        "attacker_market_value": 41000000,
        "attacker_height": 172,
        "attacker_skill_quality": 0.786,
        "defenders": [
          "Matt Grimes",
          "Caleb Yirenkyi"
        ],
        "defender_roles": [
          "CDM",
          "CDM"
        ],
        "def_skill_quality_avg": 0.562,
        "duel_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.303,
        "xg_contribution": 0.1949,
        "xg_multiplier": 1.0926,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Matt Grimes",
            "role": "CDM",
            "market_value": 5200000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.697
          },
          {
            "player": "Caleb Yirenkyi",
            "role": "CDM",
            "market_value": 23000000,
            "tackles_attempted": 1.1,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.697
          }
        ],
        "duel_analysis": "Josh King (CAM) is slightly favored against Matt Grimes and Caleb Yirenkyi in a 2-defender block. Duel win probability: 30%. The quality gap is significant (€41M vs €14M avg). Matchup xG multiplier ×1.09 (×1.00 = his usual level). Projected xG contribution: 0.195 — creating consistent moderate threat."
      },
      {
        "attacker": "Gonzalo García",
        "attacker_role": "ST",
        "attacker_market_value": 36000000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.758,
        "defenders": [
          "Ethan Pinnock",
          "Bobby Thomas"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.539,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.251,
        "xg_contribution": 0.3547,
        "xg_multiplier": 1.0745,
        "shots_in_zone": 2.3,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ethan Pinnock",
            "role": "CB",
            "market_value": 2800000,
            "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.749
          },
          {
            "player": "Bobby Thomas",
            "role": "CB",
            "market_value": 21000000,
            "tackles_attempted": 1.1,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.749
          }
        ],
        "duel_analysis": "Gonzalo García (ST) is slightly favored against Ethan Pinnock and Bobby Thomas in a 2-defender block. Duel win probability: 25%. The quality gap is significant (€36M vs €12M avg). Matchup xG multiplier ×1.07 (×1.00 = his usual level). Projected xG contribution: 0.355 — creating consistent moderate threat."
      },
      {
        "attacker": "Oscar Bobb",
        "attacker_role": "ST",
        "attacker_market_value": 27000000,
        "attacker_height": 174,
        "attacker_skill_quality": 0.694,
        "defenders": [
          "Ethan Pinnock",
          "Bobby Thomas"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.539,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.194,
        "xg_contribution": 0.1524,
        "xg_multiplier": 0.991,
        "shots_in_zone": 2.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ethan Pinnock",
            "role": "CB",
            "market_value": 2800000,
            "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.8,
            "defensive_success_rate": 0.806
          },
          {
            "player": "Bobby Thomas",
            "role": "CB",
            "market_value": 21000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.806
          }
        ],
        "duel_analysis": "Oscar Bobb (ST) is evenly matched against Ethan Pinnock and Bobby Thomas in a 2-defender block. Duel win probability: 19%. The quality gap is significant (€27M vs €12M avg). Matchup xG multiplier ×0.99 (×1.00 = his usual level). Projected xG contribution: 0.152 — with neither side clearly dominant."
      },
      {
        "attacker": "Sander Berge",
        "attacker_role": "CDM",
        "attacker_market_value": 26000000,
        "attacker_height": 195,
        "attacker_skill_quality": 0.686,
        "defenders": [
          "Matt Grimes"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.465,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.591,
        "xg_contribution": 0.0852,
        "xg_multiplier": 1.251,
        "shots_in_zone": 1.2,
        "dribbles_attempted": 2,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Matt Grimes",
            "role": "CDM",
            "market_value": 5200000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.4,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.409
          }
        ],
        "duel_analysis": "Sander Berge (CDM) has a clear attacking advantage against Matt Grimes in a direct 1v1 contest. Duel win probability: 59%. The quality gap is significant (€26M vs €5M avg). Matchup xG multiplier ×1.25 (×1.00 = his usual level). Projected xG contribution: 0.085 — and projects to generate high-quality chances."
      },
      {
        "attacker": "Shea Charles",
        "attacker_role": "CDM",
        "attacker_market_value": 24000000,
        "attacker_height": 189,
        "attacker_skill_quality": 0.669,
        "defenders": [
          "Matt Grimes"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.465,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.567,
        "xg_contribution": 0.0497,
        "xg_multiplier": 1.2156,
        "shots_in_zone": 1.2,
        "dribbles_attempted": 2,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.3,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Matt Grimes",
            "role": "CDM",
            "market_value": 5200000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.433
          }
        ],
        "duel_analysis": "Shea Charles (CDM) has a clear attacking advantage against Matt Grimes in a direct 1v1 contest. Duel win probability: 57%. The quality gap is significant (€24M vs €5M avg). Matchup xG multiplier ×1.22 (×1.00 = his usual level). Projected xG contribution: 0.050 — and projects to generate high-quality chances."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.588,
      "away_midfield_power": 0.72,
      "home_creative_power": 0.564,
      "away_creative_power": 0.698,
      "home_defensive_power": 0.478,
      "away_defensive_power": 0.576,
      "home_dominance_ratio": 0.45,
      "home_midfield_count": 3,
      "away_midfield_count": 4,
      "home_midfield_players": [
        "Jack Rudoni",
        "Matt Grimes",
        "Caleb Yirenkyi"
      ],
      "away_midfield_players": [
        "Sander Berge",
        "Shea Charles",
        "Josh King",
        "Alex Iwobi"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 48.5,
      "estimated_possession_away_pct": 51.5,
      "home_pressing_actions_per_90": 6.8,
      "away_pressing_actions_per_90": 7.5,
      "home_key_passes_projected": 4.9,
      "away_key_passes_projected": 5.7,
      "home_throughball_threat": 2.3,
      "away_throughball_threat": 2.7,
      "key_personal_duel": "Caleb Yirenkyi vs Josh King",
      "midfield_lambda_factor_home": 0.988,
      "midfield_lambda_factor_away": 1.024
    },
    "formation_analysis": {
      "home_formation": "4-2-3-1",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": 0.0,
      "away_tactical_bonus": 0.0,
      "formation_verdict": "Tactical parity between 4-2-3-1 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.201,
    "away_lambda": 1.297,
    "home_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Left Wing vs Right Back — Flank Battle"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Attacking Mid vs Double Pivot — Tight Space Battle"
    ],
    "home_player_antagonists": {
      "Jack Rudoni": {
        "opponents": [
          "David Affengruber",
          "Shea Charles"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Brandon Thomas-Asante": {
        "opponents": [
          "Calvin Bassey",
          "Timothy Castagne"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Taiwo Awoniyi": {
        "opponents": [
          "Calvin Bassey",
          "Timothy Castagne"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Ephron Mason-Clark": {
        "opponents": [
          "Calvin Bassey",
          "Timothy Castagne"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Matt Grimes": {
        "opponents": [
          "Sander Berge",
          "Josh King",
          "Shea Charles",
          "Alex Iwobi"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Caleb Yirenkyi": {
        "opponents": [
          "Sander Berge",
          "Josh King"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Milan van Ewijk": {
        "opponents": [
          "Alex Iwobi"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Ethan Pinnock": {
        "opponents": [
          "Gonzalo García",
          "Oscar Bobb"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Bobby Thomas": {
        "opponents": [
          "Gonzalo García",
          "Oscar Bobb"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Carl Rushworth": {
        "opponents": [
          "Gonzalo García",
          "Oscar Bobb"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Jay DaSilva": {
        "opponents": [
          "Gonzalo García"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "David Affengruber": {
        "opponents": [
          "Jack Rudoni"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Calvin Bassey": {
        "opponents": [
          "Brandon Thomas-Asante",
          "Taiwo Awoniyi",
          "Ephron Mason-Clark"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Timothy Castagne": {
        "opponents": [
          "Brandon Thomas-Asante",
          "Taiwo Awoniyi",
          "Ephron Mason-Clark"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Sander Berge": {
        "opponents": [
          "Matt Grimes",
          "Caleb Yirenkyi"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Alex Iwobi": {
        "opponents": [
          "Milan van Ewijk",
          "Matt Grimes"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Josh King": {
        "opponents": [
          "Matt Grimes",
          "Caleb Yirenkyi"
        ],
        "primary_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Gonzalo García": {
        "opponents": [
          "Ethan Pinnock",
          "Bobby Thomas"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Oscar Bobb": {
        "opponents": [
          "Ethan Pinnock",
          "Bobby Thomas"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Shea Charles": {
        "opponents": [
          "Matt Grimes",
          "Jack Rudoni"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, midfield_pairing"
      },
      "Bernd Leno": {
        "opponents": [
          "Ephron Mason-Clark",
          "Brandon Thomas-Asante"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Antonee Robinson": {
        "opponents": [
          "Taiwo Awoniyi"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Caleb Yirenkyi vs Josh King will be the pivotal duel. Total antagonist xG — Home: 0.83, Away: 0.99. 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.998,
      "away_gk_opposition_factor": 0.9273,
      "home_set_piece_bonus": 0.092,
      "away_set_piece_bonus": 0.0101,
      "home_defensive_solidity_vs": 0.9438,
      "away_defensive_solidity_vs": 0.9605,
      "home_midfield_factor": 0.988,
      "away_midfield_factor": 1.024,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.5736,
      "away_avg_quality": 0.6718,
      "avg_quality_gap": -0.0982,
      "squad_value_gap_log": -0.5065,
      "top5_value_gap_log": -0.3832,
      "attack_value_gap_log": -0.6102,
      "elite_count_gap": -1,
      "combined_quality_gap": -0.1728,
      "stronger_lambda_boost": 0.0951,
      "weaker_lambda_suppression": 0.0553,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.8287,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 0.984
        },
        {
          "label": "midfield_factor",
          "factor": 0.988,
          "result": 0.9722
        },
        {
          "label": "formation_bonus",
          "factor": 1.0,
          "result": 0.9722
        },
        {
          "label": "home_advantage",
          "factor": 1.15,
          "result": 1.118
        },
        {
          "label": "standing_factor",
          "factor": 0.9372,
          "result": 1.0478
        },
        {
          "label": "gk_opposition",
          "factor": 0.998,
          "result": 1.0457
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9438,
          "result": 0.987
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.092,
          "result": 1.079
        },
        {
          "label": "engine_clamp",
          "pre": 1.079,
          "result": 1.079,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.1728,
          "factor": 0.9447,
          "pre": 1.079,
          "result": 1.0193
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.0193
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.1426,
          "result": 1.1616
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": false,
          "reason": "non-target league or squad priors not found",
          "result": 1.1616
        },
        {
          "label": "router_clamp",
          "pre": 1.1616,
          "result": 1.162,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 1.0333,
          "pre": 1.162,
          "result": 1.2007,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.201
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.201
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.201,
          "result": 1.201,
          "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.201
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.45
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.994,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 1.108
        },
        {
          "label": "midfield_factor",
          "factor": 1.024,
          "result": 1.1346
        },
        {
          "label": "formation_bonus",
          "factor": 1.0,
          "result": 1.1346
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 1.1346
        },
        {
          "label": "standing_factor",
          "factor": 1.004,
          "result": 1.1391
        },
        {
          "label": "gk_opposition",
          "factor": 0.9273,
          "result": 1.0563
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9605,
          "result": 1.0146
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.0101,
          "result": 1.0246
        },
        {
          "label": "engine_clamp",
          "pre": 1.0246,
          "result": 1.0246,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.1728,
          "factor": 1.0951,
          "pre": 1.0246,
          "result": 1.122
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.122
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.22,
          "result": 1.342
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": false,
          "reason": "non-target league or squad priors not found",
          "result": 1.342
        },
        {
          "label": "router_clamp",
          "pre": 1.342,
          "result": 1.342,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 0.9667,
          "pre": 1.342,
          "result": 1.2973,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.297
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.297
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.297,
          "result": 1.297,
          "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.297
        }
      ],
      "home_bench_lambda_bonus": 0.1426,
      "away_bench_lambda_bonus": 0.22,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": false,
      "competitive_underdog_floor": 1.0,
      "competitive_underdog_floor_mode": "disabled_ablation",
      "pre_competitive_floor_home_lambda": 1.201,
      "pre_competitive_floor_away_lambda": 1.297,
      "pre_calibration_home_lambda": 1.1616,
      "pre_calibration_away_lambda": 1.342,
      "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.201,
      "final_away_lambda": 1.297
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 17,
    "opponent_position": 18,
    "standing_lambda_multiplier": 0.9372,
    "attack_index": 0.897,
    "defense_concede_index": 0.945,
    "form_multiplier": 1.005,
    "team_attack_rate_contextual": 1.3,
    "opp_defense_rate_contextual": 1.37,
    "team_ppg": 1.09,
    "opponent_ppg": 1.01
  },
  "away_standing": {
    "available": true,
    "team_position": 18,
    "opponent_position": 17,
    "standing_lambda_multiplier": 1.004,
    "attack_index": 0.841,
    "defense_concede_index": 1.203,
    "form_multiplier": 0.995,
    "team_attack_rate_contextual": 1.22,
    "opp_defense_rate_contextual": 1.74,
    "team_ppg": 1.01,
    "opponent_ppg": 1.09
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Coventry vs Fulham. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 4-2-3-1 vs 4-2-3-1 (duel lambdas: Home 1.162, Away 1.342). Final calibrated Poisson lambdas: Home 1.201, Away 1.297 (most likely score 1-1).",
    "competition": "Premier League",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 11,
      "home_fbref_players": 9,
      "away_starters_count": 11,
      "away_xgboost_players": 11,
      "away_fbref_players": 10,
      "home_bench_modelled": 7,
      "away_bench_modelled": 7
    },
    "team_priors": {
      "applied": false,
      "reason": "Non-target league or squad priors not found"
    },
    "pipeline_stages": [
      "1. XGBoost player regressions for volume & event rates with market-value quality scaling",
      "2. Multi-source prior blending (FBref 2026-2027 tables + Sofascore season history)",
      "3. Antagonist formation duel matrix resolving 1v1 and zonal matchups",
      "4. Team-level prior calibration (FBref possession and attack/defense efficiencies)",
      "5. Bivariate Poisson matrix with Dixon-Coles low-score correction"
    ],
    "final_lambdas": {
      "home_lambda": 1.201,
      "away_lambda": 1.297,
      "micro_duel_home_lambda": 1.162,
      "micro_duel_away_lambda": 1.342
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-24T13:31:07Z",
  "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
  }
}